Не может загрузить такой файл - zlib даже после использования rvm pkg install zlib

Я установил пакет zlib и ruby ​​1.9.3 с помощью rvm, но всякий раз, когда я пытаюсь установить драгоценные камни говорят cannot load such file -- zlib

Команды, которые я использовал для установки,

$ rvm install 1.9.3
$ rvm pkg install zlib

$ rvm reinstall 1.9.3 --with-readline-dir=/home/username/.rvm/usr \
    --with-iconv-dir=/home/username/.rvm/usr \
    --with-zlib-dir=/home/username/.rvm/usr \
    --with-openssl-dir=/home/username/.rvm/usr

$ rvm use 1.9.3

$ gem install heroku
ERROR: Loading command: install (LoadError)
    cannot load such file -- zlib
ERROR: While executing gem ... (NameError)
    uninitialized constant Gem::Commands::InstallCommand

Вся помощь по этой теме подсказывает мне просто сделать rvm pkg install zlib, и затем переустановите ruby ​​с помощью --with-zlib-dir=/home/username/.rvm/usr, но это не работает.

Ответ 1

Я закончил установку zlib из apt-get, а затем переустановил ruby, чтобы не использовать каталог rvm для zlib.

Вот как это сделать:

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

[Изменить] Как отмечает комментатор @chrisfinne, на системах CentOS/RedHat:

$ sudo yum install zlib-devel
$ rvm reinstall 1.9.3

Ответ 2

Оба других ответа были почти правы...

rvm-сайт для zlib обеспечивает быстрое исправление!

В верхней части страницы находится "Быстрое исправление", следуя инструкциям, это будет:

  • исправить вашу установку,
  • предоставит вам инструкции, что делать, чтобы установить zlib из вашей системы.
  • и покажите, как переустановить ruby ​​

Ответ 3

Использовать автолибы для установки зависимостей:

rvm autolibs enable
rvm reinstall 1.9.3

RVM автоматически устанавливает отсутствующие зависимости и использует их для компиляции ruby.

Подробнее о autolibs = > http://rvm.io/rvm/autolibs

Ответ 4

Ruby имеет кучу зависимостей пакетов, например, от zlib-devel. Они противны, потому что нечего указывать, что вам нужна библиотека, пока не получите какое-то непонятное сообщение об ошибке, пытаясь сделать что-то рутинное.

Решение состоит в использовании rvm. Используйте его, даже если вам нужна только одна версия рубина. Зачем? Потому что тогда вы можете сделать

rvm requirements

Это будет проверять вашу конкретную ОС и создавать набор команд, которые вы можете скопировать обратно в командную строку, чтобы установить эти недостающие пакеты.

Ответ 5

Решение, которое сработало для меня, описано в rvm github repo, проблема № 3389.

Запустить

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

для версии ruby ​​ 2.3.0.

Ответ 6

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