Символ пакета Ruby не найден: _SSLv2_client_method (LoadError)


249

Я пытался сделать некоторые обновления для openssl, используя homebrew, и мне как-то удалось все сломать. Я ничего не могу сделать сейчас, вот что я получаю, когда пытаюсь выполнить пакетную установку:

$ 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 не работает, поэтому для кода практически нет причин SSLv2_client_method. Можете ли вы открыть файл (ы) Ruby и закомментировать ссылки на методы SSLv2? Основная причина является libsslв /usr/local/opt/openssl/libформировался с no-ssl2(но это не должно быть проблемой в 2014 году).
jww

Ответы:


287

Я только что исправил похожую проблему в моей системе. Вам нужно пересобрать вашу установку Ruby 2.1.2, и она будет заново связываться с недавно обновленным 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

Это происходит после новой установки ruby ​​1.9.3 через rvm. Новый Mac и старая кодовая база. Нужна ли другая версия openssl?
Digidigo

8
@ twelve17 Ошибки связаны с тем, что не удалось найти библиотеку SSL, и ОП упомянул, что они недавно обновили установленную версию openssl. У меня была та же проблема с тем же сценарием обновления; Я подозреваю, что переустановка исправляет вещи, заставляя Ruby быть собранным из обновленных библиотек (старые не могут быть найдены).
Райан Длугош

7
Просто чтобы добавить к этому, если пользователь boxen сталкивался с этим - я не мог заставить rbenv переустановить, используя команды выше - поэтому мне пришлось удалить и переустановить 2.1.2, используя rbenv rbenv uninstall 2.1.2 rbenv install 2.1.2 bundle
jeffsaracco

4
После обновления yosemite у меня возникла эта проблема. Вышеописанное сработало, но только после того, как я перенаправил свой gcc. export CC=/usr/bin/gccДля получения дополнительной информации: вот проблема github от rbenv, которая помогла
Дэн Уильямс

1
Если вы установили rbenv вместе с homebrew, вам может понадобиться brew upgrade rbenv ruby-buildи это.
Джастин Таннер

185

У меня была похожая проблема после обновления openssl. Я использую RVM. Я смотрел, обновляя RVM.

$ rvm get stable

Я затем переустановил 1.9.3.

rvm reinstall ruby-1.9.3-p545

После переустановки я запустил:

$ rvm gemset pristine

Если вы обнаружите какие-либо ошибки, восстанавливающие ваш гемсет, лучшим вариантом будет очистить гемс и восстановить его.

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

Если у вас есть несколько наборов гемов, вам придется повторить эти шаги для каждого из них.


10
Это сработало для меня. RVM автоматически запустил здание Gemset.
Ducain

Работая для меня на Йосемити, я просто бежал: rvm get stableиrvm reinstall ruby-2.0.0
MatCarey

4
На Yosomite у меня возникла проблема с установкой ruby, поскольку он не может найти нужную gccверсию. Я закончил сCC=/usr/bin/gcc rvm reinstall ruby-1.9.3-p551
Александр Белецкий

@MatCarey rvm get stableи rvm reinstall ruby-2.0.0работал в Маверикс тоже. Спасибо.
Амерткара

То , что сработало для меня это rvm get stableследует rvm install ruby-2.0.0-p598(так как я был за несколько версий патча). Кроме того, я обновил .ruby-version, запустил bundleи вышел из своего текущего рабочего каталога ( cd ..) и вернулся в него ( cd -) перед успешным запуском foreman start.
user664833

17

Имейте ту же проблему для 1.9.3-p547, под rvm

rvm reinstall ruby-1.9.3-p547

Ruby переустанавливается, но не может настроить gemset_pristineприложение, потому что

libv8 version 3.16.14.3 failed

Именно поэтому я и пришел к этому моменту. Порочный круг разочарования ...

Обновление
Проверьте версию вашей платформы. У меня есть например Дарвин 10,8, и это не указано здесь . Таким образом, если ваша версия гема libv8 не имеет предварительно скомпилированного двоичного файла для вашей платформы, это займет много времени. Выйдите на ужин, в кино, расслабьтесь ... Если хватит, спросите, может, они установят бинарный дистрибутив ...


1
Мне также нужна поддержка ruby ​​1.9.3 и я использую rvm, homebrewи xcodev6.1.1 на Yosemite 10.10.2. Я использовал только rvm reinstall ruby-1.9.3-p394; после компиляции нового рубина RVM сделал самоцветы без проблем.
Том Харрисон

Да, он основан на бинарном распределении. Ссылка предназначена для того, чтобы сначала проверить, получит ли он немедленный ответ или уйдет и медитирует!
Джером


7

Вы можете быть придурком, как я, с несколькими openssl

У меня была та же самая проблема для 2.1.2, и превосходный ответ Райана Длугоша не зашел достаточно далеко. Моя проблема заключалась в том, что у меня было установлено несколько версий openssl (я думаю, что я установил через brew и git в предыдущих проектах).

Мне пришлось удалить / opt / local / bin / openssl, а затем пересобрать 2.1.2.

Проверьте глобальный рубиновый рубин

$ rbenv global
2.1.2

Проверьте openssl

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

Убить дубликат openssl

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

Восстановить 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

5

Когда проблема вообще не решилась, предлагаю удалить RVM. И переустановите RVM и Rails.

удаление RVM

Как я могу удалить RVM (Ruby Version Manager) из моей системы?

установка RVM, Rail

$ curl -L https://get.rvm.io | bash -s
$ rvm получить стабильные
требования
$ rvm $ rvm установить 2.0.0 --with-openssl-dir = $ HOME / .rvm / usr
$ rvm использовать 2.0.0 $ обновление gem --system 2.0.3
$ ram install rails - версия 4.0.5


4

Пользователи rbenv:

Это помогает убедиться, что вы используете правильную версию ruby. Если вы переустанавливаете rbenv или устанавливаете новый ruby, перейдите на версию ruby, которую вы только что установили:

$ rbenv local 2.1.3


1

В случае, если это может кому-нибудь помочь: у меня была установлена ​​более новая версия Ruby (2.1.2), и в моем файле .ruby-version я ссылался на старую (2.0.0-p353)

Изменение файла .ruby-версии на 2.1.2 устранило проблему для меня.


1

У меня была похожая проблема, которая возникла после обновления до ruby ​​2.2.2. Тем не менее, моя среда немного отличается, в результате чего вышеуказанные решения не работают.

Я использую:

  • OSX Yosemite (10.10.4)
  • chruby
  • рубиново-установки
  • openssl (устанавливается с помощью homebrew)

Следующая команда (и) разрешила это в моей ситуации:

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

0

В дополнение к ответам о принятии выше, вам, возможно, придется указать rbenv использовать только что установленную версию. Например, у меня была старая версия в ~ / .rbenv / version, поэтому rbenv всегда использовал старую. Ручная установка новой версии в этом файле (или через командную строку) должна решить проблему.

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

и если у вас проблемы с тем, что rbenv не видит более поздние версии, как кто-то из моих знакомых ... убедитесь, что вы обновили ruby-build. скорее всего через варку.
выходной
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.