前两天随手升级了一下sharp的依赖到最新版(0.25.4),结果捅了马蜂窝,cnpm, npm均告失败,折腾了好久才解决,好郁闷,这里特地记录一下。
cnpm遇到的问题
就是新版sharp的安装脚本会自动去github的releases里面下载预编译好的libvips二进制包,这个东西并不能通过cnpm的淘宝仓库加速,然而因为众所周知的原因,国内下载github的releases那不是慢的问题,是直接卡死……
npm遇到的问题
第二步,尝试一下npm加代理吧,自己有个一直用的小机场的,因此首先需要在Linux上安装一个python版某乳客户端,不过py版里面不像C#版自带privoxy,因此只能直接作为socks5代理使用,设置为npm代理:
npm config set proxy "socks5://localhost:1080"
npm config set https-proxy "socks5://localhost:1080"
尝试npm install sharp
来安装,结果还是不行!看了下错误信息:
info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.9.1/libvips-8.9.1-linux-x64.tar.gz
ERR! sharp tunneling socket could not be established, cause=Parse Error: Expected HTTP/
居然不能用socks5代理,还必须得用HTTP!好烦!
安装Privoxy
C#版的某乳客户端就是用privoxy来把socks5代理转换为http代理的,因此在linux上如法炮制:
# 安装privoxy,centos下用yum
apt-get install privoxy
# 修改privoxy配置文件,在末尾添加一行(注意最后的.):
# forward-socks5 / 127.0.0.1:1080 .
vi /etc/privoxy/config
# privoxy作为服务启动
service privoxy start
# 验证一下HTTP代理是否正常
curl -x localhost:8118 https://www.baidu.com
# 把npm的代理设置为http
npm config set proxy "http://localhost:8118"
npm config set https-proxy "http://localhost:8118"
重新运行npm install sharp
,终于正常了!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。