Símbolo do pacote Ruby não encontrado: _SSLv2_client_method (LoadError)

249

Eu estava tentando fazer algumas atualizações no openssl usando o homebrew e de alguma forma consegui quebrar tudo. Não posso fazer nada agora, é isso que recebo quando tento instalar o pacote:

$ 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>'
Lenek
fonte
2
O SSLv2 está quebrado, então quase não há razão para o código ter SSLv2_client_method. Você pode abrir o (s) arquivo (s) Ruby e comentar as referências aos métodos SSLv2? A causa subjacente é libsslem /usr/local/opt/openssl/libfoi configurado com no-ssl2(mas não deve ser um problema em 2014).
JWW

Respostas:

287

Corrigi um problema semelhante no meu sistema. Você precisa reconstruir sua instalação do Ruby 2.1.2 e ele será vinculado novamente ao SSL recém-atualizado.

$ 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
Ryan Dlugosz
fonte
Isso está acontecendo após uma nova instalação do ruby ​​1.9.3 via rvm. Novo Mac e uma base de código antiga. Preciso de uma versão diferente do openssl?
Digidigo # 28/14
8
@ doze17 Os erros estão relacionados com a impossibilidade de encontrar uma biblioteca SSL e o OP mencionou que tinha atualizado recentemente a versão instalada do openssl. Eu tive o mesmo problema com o mesmo cenário de atualização; Eu suspeito que a reinstalação conserte as coisas, fazendo com que o Ruby seja construído nas bibliotecas atualizadas (as antigas não podem ser encontradas).
Ryan Dlugosz
7
Só para acrescentar a isto, se um usuário boxen se depara com isso - eu não poderia começar rbenv para reinstalar usando os comandos acima - então eu tive que desinstalar e reinstalar 2.1.2 usando rbenv rbenv uninstall 2.1.2 rbenv install 2.1.2 bundle
jeffsaracco
4
Após a atualização do yosemite, tive esse problema. O exemplo acima funcionou, mas somente depois que eu redirecionei meu gcc. export CC=/usr/bin/gccPara mais informações: aqui é a questão github de rbenv que ajudou
Dan Williams
1
Se você instalou o rbenv com homebrew, talvez seja necessário brew upgrade rbenv ruby-build.
Justin Tanner
185

Eu tive um problema semelhante depois de atualizar o openssl. Eu uso rvm. Fiquei olhando atualizando o rvm.

$ rvm get stable

Eu instalei a seguir 1.9.3.

rvm reinstall ruby-1.9.3-p545

Após a reinstalação, executei:

$ rvm gemset pristine

Se você encontrar algum erro ao restaurar seu gemset, sua melhor opção será esvaziá-lo e reconstruí-lo.

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

Se você tiver vários conjuntos de gemas, precisará repetir essas etapas para cada uma delas.

Sandeep M
fonte
10
Isso funcionou para mim. rvm iniciou a construção do gemset intocada automaticamente.
Ducain
Trabalhou para mim em Yosemite, eu apenas corri: rvm get stableervm reinstall ruby-2.0.0
MatCarey 22/10
4
No Yosomite, tive um problema ao instalar o ruby, pois não é possível encontrar a gccversão correta . Acabei comCC=/usr/bin/gcc rvm reinstall ruby-1.9.3-p551
Alexander Beletsky
@ MatCarey rvm get stablee rvm reinstall ruby-2.0.0trabalhou em Mavericks também. Obrigado.
Amertkara
O que funcionou para mim é rvm get stableseguido rvm install ruby-2.0.0-p598(desde que eu estava por trás de algumas versões de patches). Além disso, atualizei .ruby-version, executei bundlee saí do meu diretório de trabalho atual ( cd ..) e retornei a ele ( cd -) antes de executar com êxito foreman start.
precisa saber é o seguinte
17

Tem o mesmo problema para 1.9.3-p547, sob rvm

rvm reinstall ruby-1.9.3-p547

O Ruby é reinstalado, mas falha na configuração de um gemset_pristinepara o aplicativo porque

libv8 version 3.16.14.3 failed

essa foi a razão pela qual cheguei a esse ponto em primeiro lugar. Círculo de frustração cruel ...

atualização
Verifique a versão da sua plataforma. Eu tenho, por exemplo, Darwin 10.8 e que não está listado aqui . Portanto, a menos que sua versão da libv8 gem tenha um binário pré-compilado para sua plataforma, isso levará muito tempo (muito tempo). Sair para jantar, um filme, relaxar ... Se o suficiente perguntar, talvez eles montem uma distribuição binária ...

Jerome
fonte
1
Eu também preciso de suporte para Ruby 1.9.3 e estou usando rvm, homebrewe xcodeV6.1.1 em Yosemite 10.10.2. Eu usei apenas rvm reinstall ruby-1.9.3-p394; depois de compilar o novo ruby, o RVM tornou as gemas intactas, sem problemas.
Tom Harrison #
Sim, é baseado na distribuição binária. O link existe para permitir que se verifique primeiro se eles receberão uma resposta imediata ou se meditarão!
31515 Jerome
14

Teve o mesmo erro e resolveu-o brew upgrade openssl

DaveWoodall.com
fonte
5
você precisou brew link --force openssl?
Kbrock 1/1
@ Kbrock, não, eu não fiz.
DaveWoodall.com
7

Você pode ser um idiota como eu, com vários openssl

Eu tinha o mesmo problema no 2.1.2 e a excelente resposta de Ryan Dlugosz não foi longe o suficiente. Meu problema era que eu tinha várias versões do openssl instaladas (acho que já havia instalado brew e git em projectos anteriores).

Eu tive que excluir / opt / local / bin / openssl e depois reconstruir 2.1.2.

Verificar global rbenv ruby

$ rbenv global
2.1.2

Verificar openssl

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

Eliminar o openssl duplicado

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

Reconstruir 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
Ralph Cowling
fonte
5

Quando não resolveu o problema, sugiro excluir o RVM. E reinstale o RVM e o Rails.

excluindo RVM

Como posso remover o RVM (Ruby Version Manager) do meu sistema?

instalação de RVM, Rail

$ curl -L https://get.rvm.io | bash -s
$ rvm fica estável
$ rvm requisitos
$ rvm install 2.0.0 --with-openssl-dir = $ HOME / .rvm / usr
$ rvm use 2.0.0 $ gem update --system 2.0.3
$ gem install rails - versão 4.0.5

Hajime
fonte
4

usuários rbenv:

Isso ajuda a garantir que você esteja usando a versão correta do ruby. Se você reinstalar o rbenv ou instalar um novo ruby, mude para a versão ruby ​​que você acabou de instalar:

$ rbenv local 2.1.3

dechimp
fonte
1

Caso isso ajude alguém: eu tinha uma versão mais recente do Ruby instalada (2.1.2) e, no meu arquivo de versão .ruby, referenciei o antigo (2.0.0-p353)

Alterar o arquivo .ruby-version para 2.1.2 corrigiu o problema para mim.

Lafeber
fonte
1

Eu tive um problema semelhante, que ocorreu após a atualização para o ruby ​​2.2.2. No entanto, meu ambiente é um pouco diferente, fazendo com que as soluções acima não funcionem.

Estou a usar:

  • OSX Yosemite (10.10.4)
  • chruby
  • instalação do ruby
  • openssl (instalado via homebrew)

O (s) seguinte (s) comando (s) resolveu isso na minha situação:

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

Além das respostas de aceitação acima, você pode precisar dizer ao rbenv para usar a versão recém-instalada. Por exemplo, eu tinha a versão antiga em ~ / .rbenv / version, então o rbenv estava sempre usando a versão antiga. A configuração manual da nova versão nesse arquivo (ou através da linha de comando) deve corrigir o problema.

rbenv install -f 2.1.2
rbenv versions
rbenv global 2.1.2 //sets global version to 2.1.2
adairdavid
fonte
e se você tiver problemas com o rbenv não vendo versões posteriores, como alguém que eu conheço, verifique se você atualizou o ruby-build. provavelmente através da fermentação.
Wkhatch