gem 安装失败,openssl 失败
Posted
技术标签:
【中文标题】gem 安装失败,openssl 失败【英文标题】:gem install fails with openssl failure 【发布时间】:2013-02-24 16:01:33 【问题描述】:我尝试在我的 OSX Mountain Lion 上安装 cocoapods (http://cocoapods.org/)。
moshe-mbp:~ moshem$ gem install cocoapods
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server key exchange B: bad ecpoint (https://rubygems.org/latest_specs.4.8.gz)
第一次尝试
rvm reinstall all --force
然后我尝试了
brew upgrade openssl
==> Upgrading openssl
==> Downloading http://openssl.org/source/openssl-1.0.1e.tar.gz
Already downloaded: /Library/Caches/Homebrew/openssl-1.0.1e.tar.gz
==> perl ./Configure --prefix=/usr/local/Cellar/openssl/1.0.1e --openssldir=/usr/local/etc/openssl zlib-dynamic shared d
==> make
==> make test
==> make install MANDIR=/usr/local/Cellar/openssl/1.0.1e/share/man MANSUFFIX=ssl
==> Caveats
To install updated CA certs from Mozilla.org:
brew install curl-ca-bundle
This formula is keg-only: so it was not symlinked into /usr/local.
Mac OS X already provides this software and installing another version in
parallel can cause all kinds of trouble.
The OpenSSL provided by OS X is too old for some software.
Generally there are no consequences of this for you. If you build your
own software and it requires this formula, you'll need to add to your
build variables:
LDFLAGS: -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include
==> Summary
???? /usr/local/Cellar/openssl/1.0.1e: 429 files, 15M, built in 5.1 minutes
然后我尝试了
openssl version
并且仍然(!)获取旧版本
moshe-mbp:~ moshem$ openssl version
OpenSSL 0.9.8r 8 Feb 2011
moshe-mbp:~ moshem$
我做错了什么?如何安装 cocoapods gem?
谢谢
编辑,尝试@sean 建议:
moshe-mbp:~ moshem$ brew update
Updated Homebrew from 672af665 to 10b4d426.
==> Updated Formulae
bash wireshark
moshe-mbp:~ moshem$ brew install openssl
Error: openssl-1.0.1e already installed
moshe-mbp:~ moshem$ brew link openssl --force
Linking /usr/local/Cellar/openssl/1.0.1e... 1139 symlinks created
moshe-mbp:~ moshem$ brew install curl-ca-bundle
Error: curl-ca-bundle-1.87 already installed
moshe-mbp:~ moshem$
moshe-mbp:~ moshem$ openssl version
OpenSSL 0.9.8r 8 Feb 2011
moshe-mbp:~ moshem$ gem install cocoapods
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server key exchange B: bad ecpoint (https://rubygems.org/latest_specs.4.8.gz)
修复 brew doctor 的问题后编辑 (2)
moshe-mbp:~ moshem$ gem install cocoapods
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server key exchange B: bad ecpoint (https://rubygems.org/latest_specs.4.8.gz)
moshe-mbp:~ moshem$ openssl version
OpenSSL 0.9.8r 8 Feb 2011
moshe-mbp:~ moshem$ brew update
Updated Homebrew from 10b4d426 to 6a00bc3c.
==> Updated Formulae
clozure-cl python python3
moshe-mbp:~ moshem$ brew install openssl
Error: openssl-1.0.1e already installed
moshe-mbp:~ moshem$
moshe-mbp:~ moshem$ echo $PATH
/Users/moshem/.rvm/gems/ruby-2.0.0-p0/bin:/Users/moshem/.rvm/gems/ruby-2.0.0-p0@global/bin:/Users/moshem/.rvm/rubies/ruby-2.0.0-p0/bin:/Users/moshem/.rvm/bin:/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/tools:/platforms:/platform-tools:
moshe-mbp:~ moshem$
修改 /etc/paths 后编辑
我将 /etc/path 文件编辑为:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
完全关闭终端并重新打开,它仍然启动旧版本的openssl!
为什么?
moshe-mbp:~ moshem$ env $PATH
env: /Users/moshem/.rvm/gems/ruby-2.0.0-p0/bin:/Users/moshem/.rvm/gems/ruby-2.0.0-p0@global/bin:/Users/moshem/.rvm/rubies/ruby-2.0.0-p0/bin:/Users/moshem/.rvm/bin:/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/tools:/platforms:/platform-tools
编辑,我的 bash_profile
source "`brew --prefix grc`/etc/grc.bashrc"
export PATH=$JAVA_HOME/bin:$PATH
export PATH="$PATH:$android_SDK/tools:$ANDROID_SDK/platforms:$ANDROID_SDK/platform-tools:$ANDROID_NDK"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
顺便说一句,我的机器上似乎不存在 /etc/grc.bashrc。此行和末尾的 rvm 行都是由已安装的脚本添加的
编辑
moshe-mbp:~ moshem$ rvm pkg install openssl
Fetching openssl-1.0.1c.tar.gz to /Users/moshem/.rvm/archives
Extracting openssl to /Users/moshem/.rvm/src/openssl-1.0.1c
Configuring openssl in /Users/moshem/.rvm/src/openssl-1.0.1c.
Compiling openssl in /Users/moshem/.rvm/src/openssl-1.0.1c.
Installing openssl to /Users/moshem/.rvm/usr
Please note that it's required to reinstall all rubies:
rvm reinstall all --force
Updating openssl certificates
moshe-mbp:~ moshem$ openssl version
OpenSSL 1.0.1e 11 Feb 2013
moshe-mbp:~ moshem$ gem source -r http://rubygems.org/
http://rubygems.org/ removed from sources
moshe-mbp:~ moshem$ gem source -a https://rubygems.org/
Error fetching https://rubygems.org/:
SSL_connect returned=1 errno=0 state=SSLv3 read server key exchange B: bad ecpoint (https://rubygems.org/specs.4.8.gz)
moshe-mbp:~ moshem$ gem install cocoapods
ERROR: Could not find a valid gem 'cocoapods' (>= 0) in any repository
【问题讨论】:
你最终得到这个工作了吗?我有同样的问题。 gem 源技巧对我不起作用。 还没有,还是个问题... 正如附加信息:当 ruby 出现 ssl 错误时,运行gem update --system --source http://rubygems.org/
以更新所有内容,包括 rubygems gem。这对我有用。
【参考方案1】:
2021-05-20 更新:Rubygems 更改了他们使用的证书。我已经更新了证书的链接,但我还没有确认这个解决方案实际上仍然有效。
这就是为我解决的问题:
安装此证书:https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem
https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
在此文件夹中: rubyfolder\lib\ruby\x.x.x\rubygems\ssl_certs
这样您就不必添加不安全的来源。
更多信息在这里:https://gist.github.com/luislavena/f064211759ee0f806c88https://www.develves.net/blogs/asd/2016-04-08-rubygems-and-ssl/
【讨论】:
为我解决了这个问题。谢谢。 这也适用于 Windows 8.1,通过 Chocolately 安装了 Ruby 2.1.0。 这两个链接对我来说都是 404 @Watchdog101 我已经更新了链接,但我不确定这个解决方案是否过时。【参考方案2】:我通过仅附加到我的 ~/.bash_profile 中的 PATH 变量来修复它,在我的情况下这意味着更改
export PATH="/usr/local/mysql/bin:$PATH"
export PATH=$M2:$PATH
export PATH=$JAVA_HOME/bin:$PATH
到
export PATH="$PATH:/usr/local/mysql/bin"
export PATH=$PATH:$M2
export PATH=$PATH:$JAVA_HOME/bin
在终端中,输入nano ~/.bash_profile
开始编辑。
【讨论】:
【参考方案3】:如果你在中国??, 尝试使用http://ruby.taobao.org/ 作为来源——这为我修复了错误。 同时,避免使用https。运行它对我有用。
gem sources --remove https://rubygems.org/
gem sources -a http://ruby.taobao.org/
gem install cocoapods
【讨论】:
【参考方案4】:您可以先安装更新的 openssl,如 Mike Slutsky 所述。 检查您的 openssl 版本:
$ openssl version
在这里获取最新的:http://www.openssl.org/source/ 然后配置安装:
$ cd openssl-1.0.1f_src/
$ ./Configure --prefix=/Users/me/bin/openssl-1.0.1f_bin darwin64-x86_64-cc
$ make install
现在用这个 openssl 配置 ruby:
$ cd ruby-2.1.0_src/
$ ./configure --with-openssl-dir=/Users/me/bin/openssl-1.0.1f_bin --prefix=/Users/me/bin/ruby-2.1.0_bin
注意:新的 openssl 不需要在你的 $PATH 上。 这对我来说适用于 ruby 2.0 和 2.1。祝你好运(-:
【讨论】:
【参考方案5】:我有同样的错误。要修复,只需运行以下命令(我知道您已经运行了一些命令,但请幽默):
brew update
brew install openssl
brew link openssl --force
brew install curl-ca-bundle
之后,打开一个新的 shell 或获取你的文件,一切都会好起来的 :)
更新:
要更新路径,您需要编辑 /etc/paths 文件,因此请执行以下操作:
sudo vim /etc/paths
里面应该是这样的:
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
您要做的是确保/usr/local/bin
位于文件的顶部。所以把它改成这样:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
希望能修复它!
【讨论】:
完成了,但还是一样,我用这个尝试结果更新了原问题 您尝试打开一个新的 shell 窗口,结果相同?您的路径也可能有问题。 brew doctor 有什么建议吗? brew医生很好,不知道,运行并进行了建议的调整。然后再次尝试,它再次使用旧的。我用这个和当前的 PATH 更新了我原来的问题 它似乎是从 /usr/bin/openssl 获取旧路径,你能告诉我需要做什么才能使该路径指向新路径吗? 我用你如何改变你的路径更新了我的答案。希望这最终得到它!【参考方案6】:rvm osx-ssl-certs update all
为我做了诀窍,ruby 2.0.0
【讨论】:
由于某种原因,我在 /etc/openssl 上的权限不正确。修复:sudo chmod og+rw /etc/openssl。 (如果您像我一样遇到权限问题,请运行上述命令进行实际修复)。此评论适用于其他人,而不是此答案的作者。 什么鬼?我有 Ruby 2.3,我得到了这个rvm osx-ssl-certs update all *** ERROR Unknown command line option: "osx-ssl-certs"
【参考方案7】:
通过避免使用 https 并改用不安全的 http 来解决此问题。运行这个对我有用。
gem source -a http://rubygems.org/
【讨论】:
答案表明这是insecure
对于看到此内容的其他人:也删除旧源。 gem source -r rubygems.org【参考方案8】:
当前版本的 rvm 在处理这些事情上做得更好,运行:
rvm get head
rvm reload
rvm autolibs enable
rvm reinstall 1.9.3 --disable-binary
确保遵循任何显示的说明 - 一切都会为您提供帮助。
【讨论】:
【参考方案9】:下面的一切都为我工作!
rvm get stable
brew update
brew install libyaml
brew install pkg-config
brew install libxml2
brew install libxslt
brew install openssl
brew link openssl --force
brew install sqlite
brew install apple-gcc42
rvm install 2.0.0 --with-gcc=gcc-4.2
如果这不起作用,请删除您现有的 rubygems 并按照以下步骤操作:
rvm remove 2.0.0
rvm get head --autolibs=3
rvm requirements
#At this point, brew install anything that's missing, like apple-gcc42.
rvm install 2.0.0 --with-gcc=gcc-4.2
【讨论】:
谢谢,但现在我尝试返回 https gem 源以利用我更新的 openssl。但它不会接受,请参阅我的问题底部以了解终端输出 好吧,让我们重新开始。检查我更新的答案。我在使用 openssl 证书时遇到了与您相同的问题,并且按照我提到的步骤对其进行了排序。所以我不确定如果这不起作用还有什么建议:/ 也用新的终端窗口进行测试。 嘿 Scotty,我按照你的指示进行操作,但安装失败,请参阅此处gist.github.com/moshem/5147971 有趣。当你使用rvm get stable
运行它时会发生什么?
rvm pkg install openssl
然后rvm requirements
确保不需要。然后rvm install 2.0.0 --with-gcc=gcc-4.2
【参考方案10】:
尝试使用http://rubygems.org/(不带 SSL)作为源 — 这为我解决了错误。
gem source -r https://rubygems.org/
gem source -a http://rubygems.org/
gem install cocoapods
【讨论】:
这行得通...谢谢!但我觉得我在作弊,因为我仍然有一个损坏的 openSSL 安装,它可能会破坏我机器上的其他东西.. 这个答案比公认的要好一些,因为它包含了移除安全源的步骤。当我尝试使用接受的答案时,只需添加不安全的源,安装命令仍然失败并出现原始错误,因为安全源仍在源列表中并且首先使用它。 2 岁,但工作就像一个魅力,除了我需要“sudo gem install cocoapods”:) 无法运行$ gemsource
。说openssl无法加载【参考方案11】:
您可以尝试从源代码更新 OpenSSL:
curl -L -O http://www.openssl.org/source/openssl-1.0.1b.tar.gz.asc
curl -L -O http://www.openssl.org/source/openssl-1.0.1b.tar.gz
gpg --verify openssl-1.0.1b.tar.gz.asc
tar xvzf openssl-1.0.1b.tar.gz
cd openssl-1.0.1b
perl ./Configure shared zlib --prefix=/opt/local darwin64-x86_64-cc
make
make test
sudo make install
source
【讨论】:
已完成,但仍使用旧版本... openssl 版本 OpenSSL 0.9.8r 2011 年 2 月 8 日 我认为不需要任何指向,它应该立即生效或在打开新终端后生效,我不知道为什么这不起作用 那么,有解决方案吗?如果是,那是什么?以上是关于gem 安装失败,openssl 失败的主要内容,如果未能解决你的问题,请参考以下文章
如果由于权限错误而失败,如何安装 gem 或更新 RubyGems