问题描述:
在iTerm2中执行brew update命令时,报出了以下错误:
fatal: unable to access 'https://github.com/Homebrew/homebrew-core/': LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
原因也很简单,和无法访问google是一个道理。由于电脑上使用了代理进行科学上网,就想着能不能在终端iTerm2中也使用代理更新brew源,答案是肯定的!
解决方案:
1. 下载ShadowsocksX: https://github.com/shadowsocks/ShadowsocksX-NG/releases/
2. 配置代理服务器:
(1) 点击Shadowsocks图标 -> Servers -> Server Preferences
(2) 点击左下角 + 号新增Server,填写代理的服务器地址、端口号、加密方式以及密码,如果有多个代理,可以给这个代理起个名字(remark),方便区分,OK即可。
3. 终端配置
(1) 点击Shadowsocks图标 -> Preferences... -> 查看HTTP代理监听的端口号和地址
(2) 打开 ~/.bash_profile文件(如果没有,新建一个),写入如下内容,注意这里的端口号和上一步的端口号保持一致
# proxy
export http_proxy=http://127.0.0.1:1087
export https_proxy=$http_proxy
(3) 在iTerm2中执行source命令使之生效
source ~/.bash_profile
4. 使用curl命令验证终端是否启用了代理
$ curl ip.cn
当前 IP:66.15.20.180 来自:美国 Linode
$ curl cip.cc
IP : 47.98.20.140
地址 : 中国 浙江 杭州
运营商 : 阿里云
数据二 : 加拿大
URL : http://www.cip.cc/47.98.20.140
或
$ curl -i https://google.com
HTTP/1.1 200 Connection established
...
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>
5. 再次执行brew update命令更新brew源,应该很顺畅的完成更新。
附录:
1. 查看代理端口号是否被占用:
$ env | grep -i proxy
http_proxy=http://127.0.0.1:8087
https_proxy=http://127.0.0.1:8087
2. 参考文章
Mac OSX终端走shadowsocks代理: https://github.com/mrdulin/blog/issues/18
Mac 终端代理设置: https://my.oschina.net/Jerrymingzj/blog/805769
使用代理解决brew更新软件超时的问题: https://liyang.pro/using-proxy-to-resolve-issues-with-brew-upgrade-timeout/