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>'

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

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.


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 ...


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


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


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


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.


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

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.