Вопрос или проблема
Я пытаюсь установить старую версию Ruby с помощью rbenv.
$ rbenv install ruby 1.9.3-p551
Получаю эту ошибку
BUILD FAILED (Ubuntu 18.04 using ruby-build 20191004)
Inspect or clean up the working tree at /tmp/ruby-build.20191022094814.9394
Results logged to /tmp/ruby-build.20191022094814.9394.log
Последние 10 строк журнала:
linking shared-object nkf.so
make[2]: Leaving directory '/tmp/ruby-build.20191022094814.9394/ruby-1.9.3-p551/ext/nkf'
compiling callback-6.c
compiling callback-7.c
compiling callback-8.c
linking shared-object dl/callback.so
make[2]: Leaving directory '/tmp/ruby-build.20191022094814.9394/ruby-1.9.3-p551/ext/dl/callback'
make[1]: Leaving directory '/tmp/ruby-build.20191022094814.9394/ruby-1.9.3-p551'
uncommon.mk:178: recipe for target 'build-ext' failed
make: *** [build-ext] Error 2
Это сработало для меня
- sudo apt install libssl1.0-dev
- curl -fsSL https://gist.github.com/FiveYellowMice/c50490693d47577cfe7e6ac9fc3bf6cf.txt | rbenv install –patch 1.9.3-p551
Нашел это по ссылке ниже.
https://stackoverflow.com/questions/51986932/debian-9-rbenv-ruby-1-9-3-openssl-not-available
это сработало для меня на ubuntu 24:
brew install rbenv/tap/[email protected]
sudo apt install libssl1.0-dev
export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix [email protected])" RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix [email protected])" rbenv install 1.9.3-p551
rbenv global 1.9.3-p551
rbenv rehash
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
ruby -v
вывод:
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]
ответ взят из https://github.com/rbenv/ruby-build/issues/1353#issuecomment-999948083
Ответ или решение
Установка старой версии Ruby, такой как 1.9.3-p551, на современную версию Ubuntu, такую как 18.04, может оказаться непростой задачей из-за несовместимости с современными библиотеками и зависимостями. Рассмотрим, как установить эту версию Ruby с использованием rbenv и решить возникающие проблемы.
Теория
Ruby 1.9.3-p551 — это устаревшая версия, выпущенная в 2014 году. Большинство современных дистрибутивов Linux, включая Ubuntu 18.04, больше не поддерживают библиотеки и зависимости, необходимые для этой версии Ruby. Это может вызвать ошибки при сборке, такие как различные проблемы с OpenSSL. Поэтому для успешной установки нам потребуется решить несколько проблем совместимости:
- Доступность OpenSSL: Старые версии Ruby используют OpenSSL 1.0, который может отсутствовать в системах с OpenSSL 1.1.
- Совместимость с современными системами сборки: Необходимо корректно настроить пути для библиотек и заголовков во избежание ошибок компиляции.
- Использование патчей: Иногда необходимо применять патчи для настройки кода Ruby для совместимости с современной системой.
Пример
В случае ошибки при установке Ruby посредством rbenv, как это описано в приведенном примере, мы сталкиваемся с проблемой несовместимости, связанной с библиотеками OpenSSL, что и вызывает сообщение об ошибке «BUILD FAILED».
Недостаток OpenSSL версии 1.0 вызывает сбой, так как Ruby ищет определенные функции и конфигурации, которые были удалены в более новых версиях библиотек.
Применение
Для установки Ruby 1.9.3-p551 и устранения указанных выше проблем, выполните следующие шаги:
-
Установить необходимые зависимости:
sudo apt-get update sudo apt-get install -y build-essential libssl1.0-dev libreadline-dev zlib1g-dev
Установив
libssl1.0-dev
, мы предоставляем компилятору нужную версию библиотеки OpenSSL. -
Установка rbenv и ruby-build:
Убедитесь, что у вас установлены rbenv и ruby-build. Если они еще не установлены, выполните:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec $SHELL git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
-
Установка Ruby с патчем:
Используйте curl, чтобы применить патч перед установкой:
curl -fsSL https://gist.github.com/FiveYellowMice/c50490693d47577cfe7e6ac9fc3bf6cf.txt | rbenv install --patch 1.9.3-p551
Этот шаг применяет исправления, помогающие интегрировать Ruby с системной библиотечной средой.
-
Настройка окружения:
После успешной установки:
rbenv global 1.9.3-p551 rbenv rehash
Обновите свой
PATH
и выполните инициализацию rbenv для активации новой версии Ruby. -
Проверка установки:
Проверьте установленную версию, чтобы убедиться в успешности установки:
ruby -v
Этот процесс должен выдать:
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]
.
Заключение
Установка старых версий Ruby на современную систему требует практического опыта в решении проблем с зависимостями и совместимостью. Посредством установки необходимых библиотек и использования патчей можно расчистить путь для успешной интеграции устаревшего программного обеспечения. Приведенные шаги помогают обойти эти препятствия и обеспечивают работоспособную установку Ruby 1.9.3-p551 на Ubuntu 18.04.