não pode carregar tal arquivo - zlib mesmo depois de usar rvm pkg install zlib

112

Eu instalei o pacote zlib e ruby ​​1.9.3 usando rvm, mas sempre que tento instalar gems ele diz cannot load such file -- zlib

Os comandos que usei para instalar são

$ rvm install 1.9.3
$ rvm pkg install zlib

$ rvm reinstalar 1.9.3 --with-readline-dir = / home / username / .rvm / usr \
    --with-iconv-dir = / home / nome de usuário / .rvm / usr \
    --with-zlib-dir = / home / nome de usuário / .rvm / usr \
    --with-openssl-dir = / home / nome de usuário / .rvm / usr

$ rvm use 1.9.3

$ gem install heroku
ERROR: Carregando comando: install (LoadError)
    não pode carregar esse arquivo - zlib
ERRO: Ao executar gem ... (NameError)
    constante não inicializada Gem :: Commands :: InstallCommand

Toda a ajuda neste assunto me diz para apenas fazer rvm pkg install zlibe reinstalar o ruby ​​com --with-zlib-dir=/home/username/.rvm/usr, mas isso não funcionou.

Razor Storm
fonte

Respostas:

201

Acabei instalando o zlib do apt-get e reinstalando o ruby ​​para não usar o diretório rvm do zlib.

Veja como fazer:

$ sudo apt-get install zlib1g-dev
$ rvm reinstall 1.9.3

[Editar] Como comentador @chrisfinne menciona, em sistemas baseados em CentOS / RedHat:

$ sudo yum install zlib-devel
$ rvm reinstall 1.9.3
Razor Storm
fonte
21
ou sudo yum install zlib-devel
chris finne
4
Bem, independentemente do sistema operacional, o conselho de @chrisfinne ainda é útil (pelo menos para mim)!
Funcionou perfeitamente para mim. Embora eu tivesse que recompilar mais uma vez, já que estava faltando libssl-dev também (eu precisava porque o rvm queria buscar as fontes de ruby ​​via HTTPS) :-)
tr9sh
9

As duas outras respostas estavam quase certas ...

O site rvm para zlib fornece uma solução rápida!

No topo da página está uma "solução rápida", siga suas instruções, ela irá:

  • conserte sua instalação,
  • fornecem instruções sobre o que fazer para instalar o zlib de seu sistema
  • e mostre como reinstalar o ruby
mpapis
fonte
1

Ruby tem várias dependências de pacote como a do zlib-devel. Eles são desagradáveis ​​porque não há nada que indique que você precisa da biblioteca até receber alguma mensagem de erro obscura ao tentar fazer algo rotineiro.

A solução é usar o rvm . Use-o mesmo se precisar apenas de uma versão do ruby. Por quê? Porque então você pode fazer

rvm requirements

Isso investigará seu sistema operacional específico e produzirá um conjunto de comandos que você pode copiar de volta para a linha de comando para instalar os pacotes ausentes.

Isaac Rabinovitch
fonte
1

Use autolibs para instalar dependências:

rvm autolibs enable
rvm reinstall 1.9.3

O RVM instalará automaticamente as dependências ausentes e as usará para compilar o Ruby.

Mais detalhes sobre autolibs => http://rvm.io/rvm/autolibs

mpapis
fonte
1
rvm pkg install openssl && rvm pkg install zlib && rvm pkg install libyaml &&
  rvm pkg install iconv
rvm install 1.9.3-p0 --with-opt-dir = $ HOME / .rvm / usr \
  --with-libxml2-dir = / usr / local / Cellar / libxml2 / 2.7.8 \
  --with-readline-dir = / usr / local / Cellar / readline / 6.2.1
Kewin
fonte
1

A solução que funcionou para mim está descrita no rvm github repo, edição # 3389 .

Corre

rvm install 2.3.0 --with-zlib-dir=/usr/local/Cellar/zlib/1.2.8

para a versão Ruby 2.3.0 .

Belgoros
fonte