我在命令行中使用网络时遇到了问题,特别是 gem 安装程序(我昨天遇到了类似的问题,但不记得具体是什么问题)。
因此,我得到:
pete@pete-Latitude-E6510:~$ sudo gem install bundler
[sudo] password for pete:
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
Errno::ECONNREFUSED: Connection refused - connect(2) (http://rubygems.org/gems/bundler-1.1.3.gem)
接下来,我无法 ping 外部地址:
pete@pete-Latitude-E6510:~$ ping -c 3 209.85.231.104
PING 209.85.231.104 (209.85.231.104) 56(84) bytes of data.
From 10.8.8.2 icmp_seq=1 Destination Port Unreachable
我使用代理。我可以 ping 10.8.8.2 上的默认网关(我相信是这样的)和 10.8.8.13 上的代理(它在非标准端口上运行)。
apt-get
例如,从命令行运行良好,并且所有访问(浏览器、更新管理器等)在 GUI 中运行良好。
我已经在 Google 上进行了广泛的搜索,但目前无法进一步了解。
答案1
看来 Gem 不尊重或不了解系统范围的代理设置。要使用代理,Gem 要求:
- http 代理被指定为环境变量
- Gem 指示通过命令行开关或通过使用此代理
.gemrc
因此,在您的终端会话中,首先指定代理,假设它位于端口 12345 上(根据需要更改):export HTTP_PROXY=http://10.8.8.13:12345
然后使用开关调用-p
Gem在最后:sudo gem install bundler -p
为了使其持久,您可以HTTP_PROXY
在.bashrc
(其他控制台程序,包括wget
和curl
也将在设置时使用它)中设置,对于 gem,将行添加--http-proxy
到$HOME/.gemrc
。