Nie znaleziono symbolu pakietu Ruby: _SSLv2_client_method (LoadError)


249

Próbowałem zrobić kilka aktualizacji openssl przy użyciu homebrew i jakoś udało mi się wszystko zepsuć. Nie mogę teraz nic zrobić, oto co otrzymuję, gdy próbuję zainstalować pakiet:

$ 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 jest zepsuty, więc nie ma prawie żadnego powodu, aby kod miał SSLv2_client_method. Czy możesz otworzyć pliki Ruby i skomentować odniesienia do metod SSLv2? Przyczyną bazowym jest libsslw /usr/local/opt/openssl/libzostała skonfigurowana no-ssl2(ale to nie powinno być problemem w 2014 roku).
jww

Odpowiedzi:


287

Właśnie naprawiłem podobny problem w moim systemie. Musisz przebudować instalację Ruby 2.1.2, aby ponownie połączyć się z nowo zaktualizowanym SSL.

$ 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

Dzieje się tak po nowej instalacji Ruby 1.9.3 przez rvm. Nowy Mac i stara baza kodu. Czy potrzebuję innej wersji openssl?
digidigo

8
@ twelve17 Błędy związane są z niemożnością znalezienia biblioteki SSL, a OP wspomniał, że niedawno zaktualizował swoją zainstalowaną wersję openssl. Miałem ten sam problem z tym samym scenariuszem aktualizacji; Podejrzewam, że ponowna instalacja naprawia rzeczy, powodując, że Ruby jest budowany na ulepszonych bibliotekach (starych nie można znaleźć).
Ryan Dlugosz

7
Aby dodać do tego, jeśli natknie się na to użytkownik boxen - nie mogłem zmusić Rbenv do ponownej instalacji za pomocą powyższych poleceń - musiałem odinstalować i ponownie zainstalować 2.1.2 za pomocą rbenv rbenv uninstall 2.1.2 rbenv install 2.1.2 bundle
jeffsaracco

4
Po aktualizacji yosemite miałem ten problem. Powyższe zadziałało, ale dopiero po przekierowaniu mojego gcc. export CC=/usr/bin/gccAby uzyskać więcej informacji: oto problem github z rbenv, który pomógł
Dan Williams

1
Jeśli zainstalowałeś rbenv z homebrew, być może będziesz musiał to zrobić brew upgrade rbenv ruby-build.
Justin Tanner

185

Miałem podobny problem po aktualizacji openssl. Używam rvm. Patrzyłem, aktualizując RVM.

$ rvm get stable

Następnie ponownie zainstalowałem 1.9.3.

rvm reinstall ruby-1.9.3-p545

Po ponownej instalacji uruchomiłem:

$ rvm gemset pristine

Jeśli zauważysz błędy podczas przywracania zestawu, najlepszym rozwiązaniem będzie opróżnienie zestawu i jego odbudowanie.

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

Jeśli masz wiele zestawów klejnotów, musisz powtórzyć te kroki dla każdego z nich.


10
To zadziałało dla mnie. rvm automatycznie rozpoczął budowę nieskazitelnego zestawu gemset.
Ducain

Pracowałem dla mnie na Yosemite, właśnie uruchomiłem: rvm get stableirvm reinstall ruby-2.0.0
MatCarey

4
Na Yosomite miałem problem z instalacją Rubiego, ponieważ nie jest w stanie znaleźć odpowiedniej gccwersji. Skończyło się na tymCC=/usr/bin/gcc rvm reinstall ruby-1.9.3-p551
Alexander Beletsky

@MatCarey rvm get stablei rvm reinstall ruby-2.0.0pracował również w Mavericks. Dzięki.
amertkara,

To, co działało dla mnie, rvm get stablenastępuje rvm install ruby-2.0.0-p598(ponieważ byłem za kilkoma wersjami łatek). Ponadto zaktualizowałem .ruby-version, uruchomiłem bundlei zamknąłem mój bieżący katalog roboczy ( cd ..) i wróciłem do niego ( cd -) przed pomyślnym uruchomieniem foreman start.
user664833

17

Mają ten sam problem dla 1.9.3-p547, w rvm

rvm reinstall ruby-1.9.3-p547

Ruby zostanie ponownie zainstalowany, ale nie może skonfigurować gemset_pristineaplikacji

libv8 version 3.16.14.3 failed

dlatego przede wszystkim doszedłem do tego punktu. Błędne koło frustracji ...

aktualizacja
Sprawdź wersję platformy. Mam na przykład Darwina 10.8 i nie ma go tutaj . Tak więc, chyba że twoja wersja klejnotu libv8 ma wstępnie skompilowany plik binarny dla twojej platformy, zajmie to dużo czasu. Wyjdź na obiad, film, wyluzuj ... Jeśli wystarczająco dużo zapytasz, może zorganizują dystrybucję binarną ...


1
Muszę również wsparcie dla Ruby 1.9.3 i używam rvm, homebrewa xcodev6.1.1 na Yosemite 10.10.2. Użyłem właśnie rvm reinstall ruby-1.9.3-p394; po skompilowaniu nowego rubinu RVM sprawił, że klejnoty były nieskazitelne, a także bez problemów.
Tom Harrison

Tak, opiera się na dystrybucji binarnej. Link ma na celu umożliwienie pierwszego sprawdzenia, czy otrzymają natychmiastową odpowiedź, lub odejdź i medytuj!
Jerome,


7

Możesz być głupkiem jak ja z wieloma opensslami

Miałem ten sam problem dla 2.1.2, a doskonała odpowiedź Ryana Długosza nie poszła wystarczająco daleko. Moim problemem było to, że miałem wiele wersji OpenSSL zainstalowane (myślę ja zainstalowana przez brew i git we wcześniejszych projektów).

Musiałem usunąć / opt / local / bin / openssl, a następnie przebudować 2.1.2.

Sprawdź globalny rubin rbenv

$ rbenv global
2.1.2

Sprawdź openssl

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

Zabij duplikat openssl

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

Przebuduj 2.1.2

$ 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

Użytkownicy rbenv:

Pomaga upewnić się, że używasz odpowiedniej wersji rubinu. Jeśli ponownie zainstalujesz rbenv lub zainstalujesz nowy ruby, zmień na właśnie zainstalowaną wersję ruby:

$ rbenv lokalny 2.1.3


1

Na wypadek gdyby komukolwiek to pomogło: Miałem zainstalowaną nowszą wersję Ruby (2.1.2), aw moim pliku .ruby odsyłam do starej (2.0.0-p353)

Zmiana mojego pliku .ruby-wersja na 2.1.2 rozwiązała problem.


1

Miałem podobny problem, który wystąpił po aktualizacji do Ruby 2.2.2. Jednak moje środowisko jest nieco inne, co powoduje, że powyższe rozwiązania nie działają.

Używam:

  • OSX Yosemite (10.10.4)
  • krzaczasty
  • instalacja ruby
  • openssl (zainstalowany przez homebrew)

Następujące polecenia rozwiązały to w mojej sytuacji:

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

0

Oprócz powyższych odpowiedzi dotyczących akceptacji może być konieczne poinformowanie rbenv o użyciu nowo zainstalowanej wersji. Na przykład miałem starą wersję w ~ / .rbenv / version, więc rbenv zawsze używał starej. Ręczne ustawienie nowej wersji w tym pliku (lub za pomocą wiersza poleceń) powinno rozwiązać problem.

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

a jeśli masz problemy z tym, że rbenv nie widzi późniejszych wersji, jak ktoś, kogo znam ... upewnij się, że zaktualizowałeś Ruby-build. najprawdopodobniej poprzez napar.
wkhatch,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.