Символ пакета 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.