Ruby 1.9.2'yi yüklemek için RVM Kullanılırken Curl Sertifika Hatası


90

Ruby 1.9.2'yi indirmeye çalışırken RVM bir sertifika hatasıyla çalışıyor. curlBir sertifika sorunu yaşıyor gibi görünüyor , ancak bunu nasıl atlayacağımı bilmiyorum. Aşağıya tam hata bilgisini ekledim.

$ 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.

Bu hatayı nasıl çözebilirim veya önleyebilirim?


Ruby sürümünü derlemek için önceki tüm bağımlılıkları kurmuş muydunuz?
eveevans

Sorunun tamamı ve önerilen çözüm çok uzun hata mesajında ​​belirtilmiştir. Bu metni burada bir cevapta tekrar etmenin çok yardımcı olacağını sanmıyorum. Bahsedilen URL'leri okuyarak başlayın.
Daniel Stenberg

2
@daniel Curl'yi, kötü bir SSL sertifikasından şikayet etmeyi durdurmanın normal yolu dışında, -k, burada kullanılamaz, çünkü curl, rvm tarafından yönlendiriliyor. BTW, curl'nin kötü SSL sertifikalarını görmezden gelmesine gerçekten izin vermek isteyip istemediğinizi dikkatlice düşünmelisiniz. Deneyebileceğiniz bir şey curl'e daha yeni bir CA paketi vermektir . @ dorothy'nin aşağıdaki cevabı işe yaramalı.
Dan Barowy

@dan: hata mesajını tekrar okuyun. Kötü sertifikaları görmezden gelmenizi özellikle önermiyor (bu hata mesajını yazdım), neler yapabileceğinizi açık bir şekilde açıklıyor ve güncellenmiş CA sertifikalarının nasıl alınacağına ilişkin ayrıntıları içeren tam bir açıklama içeren bir URL sunuyor.
Daniel Stenberg

1
@daniel: Burada önemli olan nokta, hata mesajının rvm değil curl içindir! Curl'nin önerilen çözümünü istediğiniz kadar okuyabilirsiniz, ancak rvm'nin curl çağrısını değiştiremezseniz, takılıp kalırsınız. Ben kendim curl'nin SSL paketini güncellemeyi denedim (CURL_CA_BUNDLE ayarı) ve işe yaramadı - aslında sadece güncel olmayan bir curl CA paketi değil, yaml tarball'u barındıran uzak SSL sertifikasında bir sorun var. Gerçekten çıkışı okuduktan eğer KKO bir kullanıcıyı söylemek gayet yapar sorunu çözmek, ama yani değil durum burada. Yine, sorunu gerçekten çözen aşağıdaki yanıta bakın .
Dan Barowy

Yanıtlar:


125

1.9.3'e güncellemeye çalışırken başka birinin bununla karşılaşması durumunda (sürüm büyük olasılıkla önemli olmasa da), sahip olduğunuz rvm sürümünü kontrol edin. Wayne, rvm.beginrescueend.com'dan rvm.io'ya taşınmış gibi görünüyor. Eski sitenin güvenlik sertifikasının süresi dolmuş, bu nedenle curl'nin yanıtı doğru.

Yeni siteden rvm'yi güncellemek bu sorunu çözdü ve ilerlememe izin verdi.

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

Güncelleme : @rodgerdpack'in bahsettiği gibi, komut değişiyor ve yukarıdakileri güncelledim. Genel olarak, en son bilgiler için https://rvm.io/ adresine bakın .


1
Keşke önce bu cevabı görseydim. 1.9.3'ü RVM ile Mac OS X'e yüklemek, yukarıda önerilen çözümlerle bile çalışmıyordu. RVM'yi güncellemek hile yaptı.
chris_radcliff

Benim için de bunu yaptı (1.9.2'den 1.9.3'e yükseltme) teşekkürler @jwadsack
Anna Billstrom

bu günlerde bahsettiğiniz komutu çalıştırmak "eski ve bozuk bir ubuntu paketini çalıştırıyorsunuz, nasıl düzelteceğinizi öğrenmek için stackoverflow.com/questions/9056008/…
adresini ziyaret

40

Yoksa senaryoyu değiştirmek istemez VE do "sonsuza dek" bir sertifika eklemek istemiyor sertifika demetine. Çok güzel ve hızlı bir çözüm var:

#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

Ardından komut dosyanızı çalıştırın. Ortam değişkenini sıfırlamak için (bu sertifikayı kullanmaması gereken sonraki komut dosyası çağrıları için) sisteminizde yeniden oturum açın veya ortam değişkenini ayarlayın:

export CURL_CA_BUNDLE=

Bu, yaml ile ilgili bir sorunu çözdü, ancak komplikasyonun başka bir kısmıyla ilgili ayrı sorunlarım var.
Emerson

4
Şimdi CentOS'a yüklemek için rvm alabilirim. Çok teşekkür ederim
channa ly

OSX Lion w / rvm 1.8.3'te hiçbir şey yapmaz.
Mark Richman

Centos5.4'te iyi çalışıyor. Teşekkür ederim.
Yejun Su

Ruby 2.0.0 elde etmek için OSX Mountain Lion'da bir cazibe gibi çalışır.
Arkan

21

Curl, varsayılan olarak ana dizininizde olacak .rvm / scripts / fetch biçiminde çağrılır.

Bunu en sevdiğiniz metin düzenleyiciyi kullanarak düzenleyin: örneğin,

 nano ~/.rvm/scripts/fetch

56 ve 58. satırlarda (tabii ki diğer RVM sürümleriyle değişebilir), başlayan iki satır göreceksiniz.

 fetch_command="curl ...

Sadece curl'den sonra -k ekleyin, kaydedin ve tekrar deneyin.


9
Benim için işe yaramadı, ancak fikrinizi takip ettim ve şu alternatifi buldum: Ana klasörünüzde ('~ / .curlrc') bir ".curlrc" dosyası oluşturun. Herhangi bir düzenleyicide açın ve dosyaya "güvensiz" yazın. Dosyayı kaydedin ve en iyisini umut edin.
Julian Weimer

8
RVM bu değişikliği asla dahil etmeyecek, güvensiz (-k) kullanmanız gerekiyorsa, sadece arayın echo insecure >> ~/.curlrcveya daha iyisi @dbikard talimatları uyarınca sertifikaları güncelleyin
mpapis

debian sıkıştırması üzerinde çalıştı. Daha eski gönderiler bile çok zaman kazandırabilir;) teşekkürler!
23tux

@mpapis Tamamen katılıyorum, ancak örneğin user620965'in RVM kurulum hatalarındaki çözümünü açıklayan bir hata harika olurdu
Houen

3
Bunun nedeni büyük olasılıkla aşağıdaki gönderide belirtilen rvm.io URL'sinin değişmesidir ve bunu ele almanın doğru yoludur. SSL sertifikalarını veya curl davranışını görmezden gelmenize gerek yoktur. $ Curl -L get.rvm.io | yazarak rvm'yi uygun URL'den güncelleyin | bash -s aşağıda gösterildiği gibi kararlı
cclark

20

Http://curl.haxx.se/ca/cacert.pem adresinden ca sertifikasını indirmeniz ve curl-ca-bundle-new.crt dosyanıza eklemeniz gerekir.

Bu dosyanın konumunu bulmak için şunu kullanın:

   $ curl-config --ca

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

Curl-ca-bundle.crt dosyanızı yedekleyin:

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

Sonra iki dosyayı kullanarak birleştirmek istiyorsunuz:

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

Teşekkürler, bana biraz zaman kazandırdın!
Tadas T

Bu (olurdu) bana OpenIndiana 151'de HOURS kazandırırdı. Birden fazla oy artırabilseydim yapardım.
Andrew Burns

Bu benim için CentOS 5.8 üzerinde çalıştı; Sertifikalar, CentOS'ta bulması gerekenler için / etc / pki / certs / içinde bulunur!
geedew

Ve sonuçta ortaya çıkan curl-ca-bundle-new.crt ile ne yapacaksınız?
Valerio Schiavoni

Yeni sertifika dosyası 'curl-config --ca' kullanılarak bulunan dizinde bulunmalıdır.
Anirudh

17

Belki de tüm bu karmaşık çözümler bir zamanlar gerekliydi, ancak şimdi yapmanız gereken tek şey önce RVM'yi yükseltmek ve sorununuz çözülecektir:

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

2
Ne yazık ki, RVM sürümünüz yeterince eskiyse, "rvm get head" çalışmaz bile. @ jwadsack'in cevabı nedenini açıklıyor.
Alex D

Evet doğru. Ayrıca, cevabıma dönüp baktığımda, "rvm kafayı bul" da en iyi tavsiye değil. Gerçekten "rvm stabil olsun" olmalı. Cevabımı bunu yansıtacak şekilde düzenleyeceğim.
Nick Messick

14

Curl'de sertifika kontrolünü devre dışı bırakmanın sakıncası yoksa (yapmam):

echo insecure > ~/.curlrc

11

Centos 5.6 (Final) üzerinde rvm 1.9.2'yi kurarken sorun yaşadım Hata şuydu:

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.

Sorunu çözmeme yardımcı olan eylemlerin listesi burada.

$ 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 versiyonu curl 7.18.0'dır ('$ curl -V'yi kontrol etmek için)


1
İyi çözüm, benim durumumda "rvm get head" i çalıştırırken bu hatayı yaşadım. Ve linux'ta curl-ca-bundle.crt dosyası adına dikkatli olun! farklı
Albert Català

3

Yüklemeye çalışıyordum ruby-1.9.2-p290ve aynı problemle karşılaştım. which curlCurl örneğinin sistemime (OS X Snow Leopard) bir MAMP kurulumundan geldiğini çalıştırıp anladıktan sonra, PATHdeğişkenimi sistem varsayılanını kullanacak şekilde yeniden yapılandırdım /usr/bin/curl. Bu sürümü kullanırken, curl 7.19.7Ruby'nin en son sürümünü RVM ile yüklerken hiçbir sorun yaşamadım.


2

1.9.2'yi RVM kullanarak kurarken sorun yaşadım, işte çözümüm:

Hala dosya bulunamadı hatası alıyorum ancak kurulum başarılı olmak için devam etti

[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 (alt): /Users//.rvm/archives/yaml-0.1.3.tar.gz: Açılamıyor: Böyle bir dosya veya dizin yok tar (alt): Hata kurtarılamaz: şimdi çıkılıyor tar: Çocuk durumu 2 tar döndürdü : Önceki hatalardan çıkışta hata oluştu


1
Benzer bir şey yaptım ve gayet iyi çalıştım: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'da sadece bu çözüm benim için çalıştı. Çok teşekkürler!
Christian Treppo

1

Teşekkürler Dorothy - bu tarif benim için Win7 ortamı için aşağıdaki küçük değişikliklerle çalıştı:

Bu sorunu olan diğerleri için -

  1. CA_Bundle'ın güncellenmesiyle ilgili tartışmayı takdir edin - Yapmak iyi ama bu soruna yardımcı olmadı - pyyaml ​​web sitesi sertifikası yine de CURL'nin bir hata atmasına neden olacak ve CURL yükleyici içinde başlatıldığından, -k seçeneği eklemenin yolu yok .

  2. Ruby 1.9.2-p290, YAML 0.1.4'ü bir yansıtma için Google'a yüklemeye ve bu sürümü indirmeye çalışıyor - YAML-0.1.3, sorunları atlamada hiçbir etkisi olmayacak.

  3. Çıkarılan dosyalara rvm / src klasöründe CHMOD 777'nin Windows eşdeğerini yapmanız gerekir. Güvenliği, herkesin sahiplik / tüm ayrıcalıklara sahip olacağı şekilde değiştirin ve tüm dosya ve klasörler için salt okunur özniteliği kapatın.

Yükleyici, indirmeye çalıştığında (CURL hatası) yine de hata atacak, ancak çıkarmaya çalışarak devam edecektir. Çıkarma işlemi, tarball zaten src klasörüne çıkarıldığı için hata verir. Adım 3'teki izinler doğru ayarlanmışsa YAML'yi yapılandırmanın bir sonraki adımı hatasız çalışmalı ve yükleme başka sorun olmadan tamamlanmalıdır. (Cygwin / bash aracılığıyla kurulum yapıyorsanız, 'gcc' gibi bir C derleyicisi eklemeniz ve varsayılan çekirdek cygwin kurulum seçeneklerine 'ncurses' (tput komutu) ve 'make' eklemeniz gerekecektir.)


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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.