1

前两天随手升级了一下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,终于正常了!


rockswang
1.4k 声望154 粉丝

To play is Human