RVMを使用してRuby 1.9.2をインストールすると、Curl証明書エラーが発生する


90

Ruby 1.9.2をダウンロードしようとすると、RVMで証明書エラーが発生します。curl証明書に問題があるようですが、どうすれば回避できるかわかりません。以下に正確なエラー情報を記載しました。

$ rvm install 1.9.2
Installing Ruby from source to: /Users/willdennis/.rvm/rubies/ruby-1.9.2-p180, this may take a while depending on your cpu(s)...

ruby-1.9.2-p180 - #fetching 
ERROR: Error running 'bunzip2 '/Users/willdennis/.rvm/archives/ruby-1.9.2-p180.tar.bz2'', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/extract.log
ruby-1.9.2-p180 - #extracting ruby-1.9.2-p180 to /Users/willdennis/.rvm/src/ruby-1.9.2-p180
ruby-1.9.2-p180 - #extracted to /Users/willdennis/.rvm/src/ruby-1.9.2-p180
Fetching yaml-0.1.3.tar.gz to /Users/willdennis/.rvm/archives

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /Users/willdennis/.rvm/log/ruby-1.9.2-p180/*.log. Next we'll try to fetch via http.
Trying http:// URL instead.

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /Users/willdennis/.rvm/log/ruby-1.9.2-p180/*.log
Extracting yaml-0.1.3.tar.gz to /Users/willdennis/.rvm/src
ERROR: Error running 'tar zxf /Users/willdennis/.rvm/archives/yaml-0.1.3.tar.gz -C /Users/willdennis/.rvm/src --no-same-owner', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/extract.log
/Users/willdennis/.rvm/scripts/functions/packages: line 55: cd: /Users/willdennis/.rvm/src/yaml-0.1.3: No such file or directory
Configuring yaml in /Users/willdennis/.rvm/src/yaml-0.1.3.
ERROR: Error running ' ./configure --prefix="/Users/willdennis/.rvm/usr"  ', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/configure.log
Compiling yaml in /Users/willdennis/.rvm/src/yaml-0.1.3.
ERROR: Error running '/usr/bin/make ', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/make.log
Installing yaml to /Users/willdennis/.rvm/usr
ERROR: Error running '/usr/bin/make install', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/yaml/make.install.log
ruby-1.9.2-p180 - #configuring 
ERROR: Error running ' ./configure --prefix=/Users/willdennis/.rvm/rubies/ruby-1.9.2-p180 --enable-shared --disable-install-doc --with-libyaml-dir=/Users/willdennis/.rvm/usr ', please read /Users/willdennis/.rvm/log/ruby-1.9.2-p180/configure.log
ERROR: There has been an error while running configure. Halting the installation.

このエラーを解決または回避するにはどうすればよいですか?


Rubyバージョンをコンパイルするために、以前の依存関係をすべてインストールしましたか?
eveevans 2011年

問題全体と推奨される解決策は、非常に長いエラーメッセージに記載されています。ここで回答の中でそのテキストを繰り返すことは、あまり役に立たないと思います。上記のURLを読むことから始めます。
Daniel Stenberg、

2
@daniel curlがrvmによって駆動されているため、curlが不正なSSL証明書について不平を言う通常の方法-kはここでは使用できません。ところで、curlが不正なSSL証明書を無視できるようにするかどうかを慎重に検討する必要があります。あなたが試すことができる1つのことは、curlに新しいCAバンドルを与えることです。以下の@ドロシーの答えはうまくいくはずです。
Dan Barowy、2011

@dan:エラーメッセージをもう一度読んでください。不正な証明書を無視することは特にお勧めしません(そのエラーメッセージを書きました)。これは、実行できることを明確に説明し、更新されたCA証明書の取得方法の詳細を含む完全な説明をURLに提供します。
Daniel Stenberg、2011

1
@daniel:ポイントは、エラーメッセージがrvmではなくcurlに対するものであるということです。curlが提案するソリューションは好きなだけ読むことができますが、rvmのcurlの呼び出しを変更できない場合は、行き詰まっています。私自身がcurlのSSLバンドルを更新しようとしましたが(CURL_CA_BUNDLEを設定)、動作しませんでした- 実際には、古いcurl CAバンドルだけでなく、yaml tarballをホストするリモートSSL証明書に問題があります。ユーザーにRTFMを伝えることは、出力を読んでも問題解決する場合は問題ありませんが、ここではそうではありません。繰り返しますが、実際に問題を解決する以下の回答を参照してください。
Dan Barowy、2011

回答:


125

1.9.3に更新しようとしているときに他の誰かがこれに遭遇した場合(バージョンはおそらく問題ではありません)、お持ちのrvmのバージョンを確認してください。ウェインはrvm.beginrescueend.comからrvm.ioに移動したようです。古いサイトのセキュリティ証明書の有効期限が切れているため、curlの応答は正しいです。

新しいサイトからrvmを更新すると、この問題が修正され、先に進むことができました。

$ \curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled

更新:@rodgerdpackが言及したように、コマンドが変更され、上記を更新しました。一般的に、最新の情報についてはhttps://rvm.io/を参照してください


1
この答えを最初に見ていたらよかったのに。RVMを使用してMac OS Xに1.9.3をインストールすると、上記で提案されたソリューションを使用しても機能しませんでした。ただし、RVMを更新するとうまくいきます。
chris_radcliff

これは私にとってもそうでした(1.9.2から1.9.3へのアップグレード)おかげで@jwadsa​​ck
Anna Billstrom 2012

最近、あなたが言及するコマンドを実行すると、「古くて壊れたubuntuパッケージを実行しています。それを修正する方法については、stackoverflow.com
questions / 9056008 /…

40

スクリプトを変更したくない場合かつ「永久に」証明書を証明書バンドルに追加したくない場合。非常に素晴らしく迅速な解決策があります:

#to download the cert
wget http://curl.haxx.se/ca/cacert.pem
#to let curl use it for the next calls
export CURL_CA_BUNDLE=~/cacert.pem

次に、スクリプトを実行します。環境変数をリセットするには(この証明書を使用しない後続のスクリプト呼び出しの場合)、システムに再ログインするか、環境変数の設定を解除します。

export CURL_CA_BUNDLE=

これでyamlの問題が修正されましたが、複雑な他の部分で別の問題があります。
エマーソン

4
これで、RVMをCentOSにインストールできます。ありがとうございました
chananna ly

OSX Lion w / rvm 1.8.3では何もしません。
マークリッチマン2012

Centos5.4で正常に動作します。ありがとうございました。
Yejun Su

Ruby 2.0.0を入手するために、OSX Mountain Lionの魅力のように動作します。
Arkan

21

Curlは、デフォルトでホームディレクトリにある.rvm / scripts / fetchで呼び出されます。

お気に入りのテキストエディタを使用してこれを編集します。たとえば、

 nano ~/.rvm/scripts/fetch

56行目と58行目(もちろん、RVMの他のバージョンによって異なる場合があります)には、次の2行が表示されます。

 fetch_command="curl ...

curlの後に-kを追加して保存し、再試行してください。


9
それは私にとってはうまくいきませんでしたが、私はあなたの考えに従ってこの代替案を見つけました:ホームフォルダー( '〜/ .curlrc')に「.curlrc」ファイルを作成します。任意のエディターで開き、「insecure」とファイルに入力します。ファイルを保存して、最善を尽くしてください。
Julian Weimer、2011

8
RVMは、その変更が含まれることはありません、我々はこのようにそれをやって落胆、あなたが安全でない(-k)を使用する必要がある場合だけで呼び出すecho insecure >> ~/.curlrcか、さらに良い@dbikard指示に従ってちょうど更新証明書
mpapis

debian squeezeに取り組みました。古い投稿でも多くの時間を節約できます;)thx!
23tux

@mpapis私は完全に同意しますが、たとえばRVMインストールエラーにおけるuser620965の解決策を説明するエラーは素晴らしいでしょう
Houen

3
これは、以下の投稿で言及されているrvm.ioへのURLの変更が原因である可能性が高く、これに対処する正しい方法です。SSL証明書やcurlの動作を無視する必要はありません。$ curl -L get.rvm.io |を発行して、適切なURLからrvmを更新するだけです。bash -s以下に示すように安定
cclark

20

http://curl.haxx.se/ca/cacert.pemからca証明書をダウンロードし、curl-ca-bundle-new.crtファイルに追加する必要があります。

このファイルの場所を見つけるには、以下を使用します。

   $ curl-config --ca

   /usr/share/curl/curl-ca-bundle.crt

curl-ca-bundle.crtファイルをバックアップします。

$ cp /usr/share/curl/curl-ca-bundle.crt /usr/share/curl/curl-ca-bundle.crt.old

次に、次のコマンドを使用して2つのファイルを連結します。

$ cat cacert.pem /usr/share/curl/curl-ca-bundle.crt >> curl-ca-bundle-new.crt

ありがとう、あなたは私をしばらく救った!
タダスT

これにより、OpenIndiana 151で何時間も節約できたはずです。
アンドリューバーンズ

これは私にとってCentOS 5.8で機能しました。CentOSで証明書を見つける必要がある場合、証明書は/ etc / pki / certs /にあります。
geedew 14

そして、結果のcurl-ca-bundle-new.crtで何をしますか?
Valerio Schiavoni 2014

新しい証明書ファイルは、 'curl-config --ca'を使用して見つかったディレクトリに存在する必要があります。
Anirudh 2015年

17

おそらくこれらの複雑なソリューションはすべてかつて必要でしたが、今やらなければならないことは最初にRVMをアップグレードするだけであり、問​​題は解決されます。

$ rvm get stable
$ rvm reload
$ rvm install ruby-1.9.3-p194

2
残念ながら、RVMのバージョンが十分に古い場合、「rvm get head」は機能しません。@jwadsa​​ckの回答がその理由を説明しています。
Alex D

ええ、それは本当です。また、私の答えを振り返ってみると、「rvm get head」も最善のアドバイスではありません。本当に「rvm get stable」になるはずです。これを反映するために私の回答を編集します。
Nick Messick 2012

14

curlで証明書チェックを無効にしてもかまわない場合(私はしません):

echo insecure > ~/.curlrc

11

Centos 5.6(最終)で、rvm 1.9.2のインストールに問題がありました。エラーは次のとおりです。

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /usr/local/rvm/log/ruby-1.9.2-p290/*.log. Next we'll try to fetch via http.
Trying http:// URL instead.

curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). The default
 bundle is named curl-ca-bundle.crt; you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.
ERROR: There was an error, please check /usr/local/rvm/log/ruby-1.9.2-p290/*.log
ERROR: There has been an error while trying to fetch the source.  
Halting the installation.
ERROR: There has been an error fetching the ruby interpreter. Halting the installation.

これは私が問題を解決するのを助けた行動のリストです

$ curl-config --ca # show path to the certificate
/usr/local/share/curl/curl-ca-bundle.crt
$ cd /usr/local/share/curl/ # go to that path
$ cp curl-ca-bundle.crt curl-ca-bundle.crt.bak # backup certificate
$ curl http://curl.haxx.se/ca/cacert.pem -o curl-ca-bundle.crt # download new
$ rvm install 1.9.2 # bingo it works

Btw curlのバージョンはcurl 7.18.0です( '$ curl -V'を確認するには)


1
私の場合、「rvm get head」を実行するとこのエラーが発生しました。Linuxでは、ファイルcurl-ca-bundle.crtの名前に注意してください。違います
AlbertCatalà

3

インストールしようruby-1.9.2-p290としたところ、同じ問題が発生しました。実行which curlして、curlインスタンスがシステムにインストールされたMAMP(OS X Snow Leopard)からのものであることを認識した後PATH、システムのデフォルトを使用するように変数を再構成しました/usr/bin/curl。このバージョンを使用してcurl 7.19.7、RVMでRubyの最新バージョンをインストールしても問題ありませんでした。


2

RVMを使用して1.9.2をインストールするときに問題が発生しました。これが私の解決策です:

それでもファイルが見つかりませんというエラーが表示されますが、インストールは成功しました

[2011-07-05 14:24:07] tar zxf /Users//.rvm/archives/yaml-0.1.3.tar.gz -C /Users//.rvm/src --no-same-owner tar (子):/Users//.rvm/archives/yaml-0.1.3.tar.gz:開けません:そのようなファイルまたはディレクトリはありませんtar(子):エラーは回復できません:現在終了していますtar:子がステータス2を返しましたtar :エラー終了が以前のエラーから遅延しました


1
私は同様のことを行い、うまくいきました:wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz; cp yaml-0.1.4.tar.gz /Users/yourname/.rvm/archives; rvm install default
Wei

Mac Osx Lionでは、このソリューションのみが機能しました。どうもありがとう!
クリスチャントレポ

1

ドロシーに感謝-このレシピは、Win7環境に次の小さな変更を加えることでうまくいきました。

この問題を抱えている他の人のために-

  1. CA_Bundleの更新に関するディスカッションに感謝します-実行しても問題ありませんでしたが、pyyamlのWebサイト証明書によりCURLでエラーが発生し、CURLはインストーラー内で起動されるため、-kオプションを追加する方法はありません。

  2. Ruby 1.9.2-p290はYAML 0.1.4をインストールしてミラー用にGoogleをインストールし、そのバージョンをダウンロードしようとしています-YAML-0.1.3は問題の回避に影響しません。

  3. CHMOD 777と同等のWindowsを実行する必要があります-rvm / srcフォルダー内で抽出されたファイルに。全員が所有権/すべての特権を持つようにセキュリティを変更し、すべてのファイルとフォルダの読み取り専用属性をオフにします。

インストーラーはダウンロードしようとするとエラー(CURLエラー)をスローしますが、解凍しようとすると再開します。tarballはすでにsrcフォルダーに抽出されているため、抽出するとエラーがスローされます。YAMLを構成する次のステップは、ステップ3で許可が正しく設定されていればエラーなしで機能し、インストールはそれ以上問題なく完了するはずです。(cygwin / bash経由でインストールする場合は、「gcc」などのCコンパイラを追加し、デフォルトのコアcygwinセットアップオプションに「ncurses」(tputコマンド)と「make」を追加する必要があります。)


0
$ sudo apt-get install curl

$ curl -L https://get.rvm.io | bash -s stable --ruby   with ruby

$ curl -L https://get.rvm.io | bash -s stable --rails   with rails
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.