Bundle Install 无法从 https://rubygems.org/ 获取规格。

57
我试图按照Hartl Rails教程进行操作,但在使用bundler gem时遇到了问题。
当使用“bundle install”或“bundle update”命令时,会输出以下内容:
获取源自https://rubygems.org/的源索引
无法从https://rubygems.org/获取规范
我已经搜索了这个输出,但在网上没有找到太多相关问题。
也许我有另一个干扰bundler的gem?我目前对rails的经验很少。
    source 'https://rubygems.org'

gem 'rails', '3.2.12'

group :development do
  gem 'sqlite3', '1.3.5'
end


# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '3.2.5'
  gem 'coffee-rails', '3.2.2'

  gem 'uglifier', '1.2.3'
end

gem 'jquery-rails', '2.0.2'

我的解决方案有两个部分: 我将"https"更改为"http",这暂时解决了问题。第二个问题是,尽管我使用的是最新版的ruby 1.9.3,但我认为我安装的ruby 2.0.0有问题。因此,我重新安装了ruby 2.0.0,并且可以在https下使用"bundle install"。

这意味着你的 Ruby 安装与 OpenSSL 的兼容存在问题。尽管它应该给出不同类型的错误,但是这很奇怪。 - enthrops
我今天早些时候安装了brew openssl,它会有影响吗? - Steven
我实际上是从“rvm requirements”安装了所有这些东西:“brew install autoconf automake apple-gcc42 libtool pkg-config openssl readline libyaml sqlite libxml2 libxslt libksba”。我对这种环境还比较陌生,不确定其中是否有任何会影响到它。 - Steven
啊,我今天在安装RVM时不小心安装了Ruby 2.0。我干净地安装了Mac OS 10.8.2,安装了X-code,然后安装了homebrew,接着是RVM,然后是Ruby 2.0,再是Ruby 1.9.3。然后通过brew安装了gcc42和其他包,如openssl。但现在想想,我认为Ruby 2.0没有正确安装,所以我会重新安装它... - Steven
如果你决定尝试Rbenv,请获取此插件以便能够使用rbenv install安装Ruby版本,同时不要忘记删除RVM,否则它们会发生冲突。请点击此链接获取插件。 - enthrops
显示剩余2条评论
18个回答

71

如果以上的内容都不能满足下一个勇敢的探险家,我想我会在这里放一下,经过我花了4个小时进行搜索后,发现IPV6是罪魁祸首,之后在 help.rubygems.org 上找到了这个特定的帖子。 解决方案? 这样做(Fedora,Linux):

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

我设置了一个shell脚本来开启和关闭IPv6,这样我可以在运行命令时不使用它,现在一切都顺利运行。


19
在macOS(我是Sierra版本)中遇到了完全相同的令人沮丧的问题(而且也不时出现,昨天还好好的)。在Mac上,切换ipv6开和关的命令是sudo networksetup -setv6off 'Wi-Fi',将其打开则是sudo networksetup -setv6automatic 'Wi-Fi'。(将“Wi-Fi”替换为网络偏好设置中您的网络接口名称)。将其制作成bundler的包装器脚本是留给读者自行练习的。为什么我们在2019年仍然会遇到这些问题?Google Cloud Platform也有同样的问题。 - XP84
5
这个应该得到更多的赞。涉及将 https 改成 http 的解决方案存在安全风险,应予以避免。 - cyc115
3
这可能听起来有些奇怪,但这个答案确实解决了问题;我本不想相信,但在我的情况下,IPv6 是问题的根本原因。谢谢。 - fycth
必须是:sysctl net.ipv6.conf.all.disable_ipv6 sysctl net.ipv6.conf.default.disable_ipv6……而且这种方式并不完全有效!! - Mohsen Abasi
我不确定你的意思,Mohsen。-w开关是用于写入更改的,=1指定更改为二进制真,sudo是sudo。你做了什么不同的事情,它有什么不完全工作的地方? - WebDragon

27

我遇到了同样的问题。我发现唯一可行的解决方案是在Gemfile中强制使用http而不是https:

source 'http://rubygems.org'

这不是一个可行的解决方案,更像是一种hacky的变通方法。使用HTTPS是为了防止中间人攻击,以便您知道从源下载的gem是合法的。请谨慎使用! - Dan
没有帮助我。 - TwistedOwl

11

如果您使用的是Windows系统,您可以尝试以下方法:

set HTTP_PROXY= <your proxy address without http://>

set HTTPS_PROXY=%HTTP_PROXY%

例如:

HTTP_PROXY=mycompany.myproxy.com:8080

HTTPS_PROXY=%HTTP_PROXY%

对我很有效


9

这可能是暂时的网络问题。尝试使用命令重新启动网络服务。

service network restart

如果是*nix机器。

10
在OS X上:sudo ifconfig en0 down sudo ifconfig en0 up翻译为中文:在OS X系统中:sudo ifconfig en0 down sudo ifconfig en0 up注:此命令用于关闭和重新启动网络接口。 - bpieck
10
在 macOS X 上,我刚刚关闭了 Wi-Fi 然后重新开启,它就正常工作了!谢谢! - ntocampos

5

我在使用OS X 10.8.5 中的 ruby-2.0.0-p247 时遇到了同样的问题。

请确保 Gemfile 文件中第一行使用了 https://

source 'https://rubygems.org'

我重新安装了那个版本的ruby。
rvm reinstall ruby-2.0.0

Ruby被升级到ruby-2.0.0-p598(版本取决于最新的修补程序)。

bundle随后可以正常工作,尽管所有宝石都重新安装了。


3

我遇到的只是一个简单的网络问题,只需要重启电脑/路由器即可。


2
使用 wget 命令来检查您是否可以访问该域名。
wget http://rubygems.org/latest_specs.4.8.gz

如果这种方法失败了,那么请尝试以下方法。
编辑您的/etc/resolv.conf文件,并在顶部附近添加以下行以使用Google的名称服务器。
nameserver 8.8.8.8
nameserver 8.8.4.4

2

造成这种问题的另一个原因是您在代理服务器后面。我在这里描述解决方案,希望对其他人有所帮助。:)

如果您不知道代理的登录/密码,并遇到此问题,可以首先通过以下命令检查是否需要(重新)安装任何内容:

C:\...> bundle check
Resolving dependencies...
The Gemfile's dependencies are satisfied

如果您得到了与上述不同的响应,则可以在这里(rubygems.org)找到适当版本的宝石,然后通过以下命令(从已下载宝石的目录中)安装它:
gem install <gem-name> --locally 

1
我在Cloud 9工作时遇到了这个问题。尝试了几次“bundle install”并向c9支持发送电子邮件(无回复),最终通过终止所有进程并进行IDE的硬重启来解决了问题。
方法是直接点击右侧顶部显示CPU、内存、磁盘的小条形图,然后点击进程列表,选择所有进程并强制终止。然后退出进程列表,再次点击条形图,这次选择“重新启动”。
之后,我就能够毫无问题地运行bundle了。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接