Ruby Bundle Sembolü bulunamadı: _SSLv2_client_method (LoadError)


249

Homebrew kullanarak openssl için bazı güncellemeler yapmaya çalışıyordum ve bir şekilde her şeyi kırmayı başardım. Şimdi bir şey yapamam, paket yüklemeyi yapmaya çalıştığımda elde ettiğim şey bu:

$ bundle install
/Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in    `require': dlopen(/Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/x86_64-darwin13.0/openssl.bundle, 9): Symbol not found: _SSLv2_client_method (LoadError)
Referenced from: /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/x86_64-darwin13.0/openssl.bundle
Expected in: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
in /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/x86_64-darwin13.0/openssl.bundle - /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/x86_64-darwin13.0/openssl.bundle
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/openssl.rb:17:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/security.rb:11:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/package.rb:43:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/dependency_installer.rb:3:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/installer.rb:2:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/cli/install.rb:78:in `run'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/cli.rb:146:in `install'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/vendor/thor/command.rb:27:in `run'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/vendor/thor/invocation.rb:121:in `invoke_command'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/vendor/thor.rb:363:in `dispatch'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/vendor/thor/base.rb:440:in `start'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/cli.rb:9:in `start'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/bin/bundle:20:in `block in <top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/lib/bundler/friendly_errors.rb:5:in `with_friendly_errors'
    from /Users/asServer/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/bundler-1.6.3/bin/bundle:20:in `<top (required)>'
    from /Users/asServer/.rbenv/versions/2.1.2/bin/bundle:23:in `load'
    from /Users/asServer/.rbenv/versions/2.1.2/bin/bundle:23:in `<main>'

2
SSLv2 bozuldu, bu nedenle kodun olması için neredeyse hiçbir neden yok SSLv2_client_method. Ruby dosya (lar) ını açabilir ve SSLv2 yöntemlerine yapılan referansları yorumlayabilir misiniz? Altta yatan neden olan libsslbölgesi /usr/local/opt/openssl/libile yapılandırıldı no-ssl2(ancak 2014 yılında bir sorun olmayacaktır).
jww

Yanıtlar:


287

Benzer bir sorunu sistemimde de düzelttim. Ruby 2.1.2 yüklemenizi yeniden oluşturmanız gerekir ve yeni güncellenen SSL'ye yeniden bağlanır.

$ rbenv install 2.1.2
rbenv: /Users/ryan/.rbenv/versions/2.1.2 already exists
continue with installation? (y/N) y
Downloading ruby-2.1.2.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/f22a6447811a81f3c808d1c2a5ce3b5f5f0955c68c9a749182feb425589e6635
Installing ruby-2.1.2...
Installed ruby-2.1.2 to /Users/ryan/.rbenv/versions/2.1.2

Bu, rubm 1.9.3'ün rvm yoluyla yeni bir kurulumundan sonra oluyor. Yeni Mac ve eski bir kod tabanı. Openssl'in farklı bir sürümüne ihtiyacım var mı?
digidigo

8
@ twelve17 Hatalar bir SSL kitaplığı bulamamakla ilgilidir ve OP, yakın zamanda kurulmuş olan openssl sürümünü yükselttiklerinden bahsetmiştir. Aynı yükseltme senaryosunda da aynı sorunu yaşadım; Ruby'nin yükseltilmiş kitaplıklara (eski olanlar bulunamaz) karşı oluşturulmasına neden olarak yeniden yükleme işlemlerinin düzeltildiğinden şüpheleniyorum.
Ryan Dlugosz

7
Sadece buna eklemek için, kutulu bir kullanıcı bununla karşılaşırsa - yukarıdaki komutları kullanarak yeniden yüklemek için rbenv alamadım - bu yüzden rbenv kullanarak 2.1.2'yi kaldırıp yeniden yüklemek zorunda kaldım rbenv uninstall 2.1.2 rbenv install 2.1.2 bundle
jeffsaracco 10:14

4
Yosemite yükseltmesinden sonra bu sorunu yaşadım. Yukarıdakiler işe yaradı, ancak gcc'imi yeniden yönlendirdikten sonra. export CC=/usr/bin/gccDaha fazla bilgi için: İşte yardımcı olan rbenv'den github sorunu
Dan Williams

1
Eğer rbenv'i homebrew ile kurduysanız, yapmanız gerekebilir brew upgrade rbenv ruby-build.
Justin Tanner

185

Ben openssl yükseltme sonra benzer bir sorun vardı. RVM kullanıyorum. RVM'yi yükselterek baktım.

$ rvm get stable

Daha sonra 1.9.3'ü yeniden yükledim.

rvm reinstall ruby-1.9.3-p545

Yeniden yükledikten sonra koştum:

$ rvm gemset pristine

Mücevherinizi geri yüklerken herhangi bir hata görürseniz, en iyi seçeneğiniz cevabı boşaltmak ve yeniden oluşturmak olacaktır.

rvm gemset use mygemset
rvm gemset empty mygemset
gem install bundler
bundle install

Birden fazla değerli taşınız varsa, bu adımları her biri için tekrarlamanız gerekir.


10
Bu benim için çalıştı. rvm otomatik olarak gemset bozulmamış binasını başlattı.
Ducain

Yosemite'de benim için çalıştım, koştum: rvm get stablevervm reinstall ruby-2.0.0
MatCarey

4
Yosomite üzerinde doğru gccsürümü bulamadığı için Ruby'yi yüklerken bir sorun yaşadım . Ben ile sona erdiCC=/usr/bin/gcc rvm reinstall ruby-1.9.3-p551
Alexander Beletsky

@MatCarey rvm get stableve rvm reinstall ruby-2.0.0Mavericks'te de çalıştı. Teşekkürler.
amertkara

Benim için işe yarayan şeyi rvm get stabletakip ediyor rvm install ruby-2.0.0-p598(birkaç yama versiyonunun arkasında olduğum için). Ayrıca, güncel çalışma dizinimi ( ) güncelledim .ruby-version, çalıştırdım bundleve çıktım ve başarıyla çalıştırmadan önce cd ..ona ( cd -) döndüm foreman start.
user664833

17

Aynı sorun rvm altında, 1.9.3-p547 için

rvm reinstall ruby-1.9.3-p547

Ruby yeniden yüklenir, ancak gemset_pristineuygulama için a kurulumu başarısız olur, çünkü

libv8 version 3.16.14.3 failed

ilk etapta bu noktaya gelmemizin nedeni buydu. Kısır hayal kırıklığı çemberi ...

güncelleme
Platform sürümünüzü kontrol edin. Örneğin Darwin 10.8 var ve burada listelenmiyor . Yani, libv8 geminizin sürümü platformunuz için önceden derlenmiş bir ikili dosyaya sahip değilse, uzun (uzun-uzun) bir zaman alacaktır. Akşam yemeğine çık, bir film yap, rahatla ... Yeterince sor, belki ikili bir dağıtım kurarlar ...


1
Ayrıca Yakut 1.9.3 için desteğe ihtiyaç ve kullanıyorum rvm, homebrewve xcodeYosemite 10.10.2 üzerinde v6.1.1. Sadece kullandım rvm reinstall ruby-1.9.3-p394; Yeni yakut derlendikten sonra RVM, taşları bozulmamış hale getirdi.
Tom Harrison

Evet, ikili dağılıma dayanır. Bağlantı, hemen yanıt alıp almayacaklarını veya gidip meditasyon yapıp yapamayacaklarını kontrol etmelerine izin vermek için var!
Jerome


7

Benim gibi bir salak olabilirsin, birden fazla açılışla

2.1.2 için de aynı sorunu yaşadım ve Ryan Dlugosz'un mükemmel cevabı yeterince ileri gitmedi. Benim sorunum, birden fazla openssl sürümünün yüklü olmasıydı (sanırım önceki projelerde brew ve kurulumlarda yükledim git).

Ben / opt / local / bin / openssl silmek ve sonra 2.1.2 yeniden inşa etmek zorunda kaldı.

Global rbenv ruby'yi kontrol edin

$ rbenv global
2.1.2

Açıkları kontrol et

$ which -a openssl
/opt/local/bin/openssl
/opt/local/bin/openssl
/usr/bin/openssl

Yinelenen openssl'yi öldür

$ sudo rm -rf /opt/local/bin/openssl

2.1.2'yi yeniden oluştur

$ rbenv install -f 2.1.2
Downloading openssl-1.0.1g.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028
Installing openssl-1.0.1g...
Installed openssl-1.0.1g to /Users/globber/.rbenv/versions/2.1.2

Downloading ruby-2.1.2.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/f22a6447811a81f3c808d1c2a5ce3b5f5f0955c68c9a749182feb425589e6635
Installing ruby-2.1.2...
Installed ruby-2.1.2 to /Users/globber/.rbenv/versions/2.1.2


4

rbenv kullanıcıları:

Ruby'nin doğru sürümünü kullandığınızdan emin olmanıza yardımcı olur. Rbenv'i yeniden yükler veya yeni bir ruby ​​yüklerseniz, az önce kurduğunuz ruby ​​versiyonuna geçin:

$ rbenv yerel 2.1.3


1

Herkese yardımcı olabilirse: Ruby'nin daha yeni bir sürümü yüklü (2.1.2) ve .ruby sürümü dosyamda eskisine (2.0.0-p353) başvurdum

.Ruby sürüm dosyamı 2.1.2 olarak değiştirmek sorunu benim için düzeltti.


1

Ruby 2.2.2'ye yükselttikten sonra da benzer bir sorun yaşadım. Ancak, ortamım biraz farklıdır, yukarıdaki çözümlerin çalışmamasına neden olur.

Kullanıyorum:

  • OSX Yosemite (10.10.4)
  • chruby
  • yakut-install
  • openssl (homebrew üzerinden kurulur)

Aşağıdaki komut (lar) benim durumumda bunu çözdü:

> sudo ruby-install -r /opt/rubies ruby 2.2.2 -- --with-openssl-dir=/usr/local/opt/openssl
> gem install bundler
> bundler install

0

Yukarıdaki kabul cevaplarına ek olarak, rbenv'e yeni kurulan sürümü kullanmasını söylemeniz gerekebilir. Örneğin, ~ / .rbenv / sürümünde eski sürümüm vardı, bu yüzden rbenv her zaman eskisini kullanıyordu. Dosyadaki (veya komut satırından) yeni sürümü manuel olarak ayarlamak sorunu çözmelidir.

rbenv install -f 2.1.2
rbenv versions
rbenv global 2.1.2 //sets global version to 2.1.2

ve rbenv ile daha sonraki sürümleri görmeme konusunda sorunlarınız varsa, tanıdığım biri gibi ... ruby-build'i güncellediğinizden emin olun. büyük olasılıkla demleme yoluyla.
wkhatch
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.