Установка ruby 1.9.3-p551 на Ubuntu 18.04

Вопрос или проблема

Я пытаюсь установить старую версию 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

Это сработало для меня

  1. sudo apt install libssl1.0-dev
  2. 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. Поэтому для успешной установки нам потребуется решить несколько проблем совместимости:

  1. Доступность OpenSSL: Старые версии Ruby используют OpenSSL 1.0, который может отсутствовать в системах с OpenSSL 1.1.
  2. Совместимость с современными системами сборки: Необходимо корректно настроить пути для библиотек и заголовков во избежание ошибок компиляции.
  3. Использование патчей: Иногда необходимо применять патчи для настройки кода Ruby для совместимости с современной системой.

Пример

В случае ошибки при установке Ruby посредством rbenv, как это описано в приведенном примере, мы сталкиваемся с проблемой несовместимости, связанной с библиотеками OpenSSL, что и вызывает сообщение об ошибке «BUILD FAILED».

Недостаток OpenSSL версии 1.0 вызывает сбой, так как Ruby ищет определенные функции и конфигурации, которые были удалены в более новых версиях библиотек.

Применение

Для установки Ruby 1.9.3-p551 и устранения указанных выше проблем, выполните следующие шаги:

  1. Установить необходимые зависимости:

    sudo apt-get update
    sudo apt-get install -y build-essential libssl1.0-dev libreadline-dev zlib1g-dev

    Установив libssl1.0-dev, мы предоставляем компилятору нужную версию библиотеки OpenSSL.

  2. Установка 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
  3. Установка Ruby с патчем:

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

    curl -fsSL https://gist.github.com/FiveYellowMice/c50490693d47577cfe7e6ac9fc3bf6cf.txt | rbenv install --patch 1.9.3-p551

    Этот шаг применяет исправления, помогающие интегрировать Ruby с системной библиотечной средой.

  4. Настройка окружения:

    После успешной установки:

    rbenv global 1.9.3-p551
    rbenv rehash

    Обновите свой PATH и выполните инициализацию rbenv для активации новой версии Ruby.

  5. Проверка установки:

    Проверьте установленную версию, чтобы убедиться в успешности установки:

    ruby -v

    Этот процесс должен выдать: ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux].

Заключение

Установка старых версий Ruby на современную систему требует практического опыта в решении проблем с зависимостями и совместимостью. Посредством установки необходимых библиотек и использования патчей можно расчистить путь для успешной интеграции устаревшего программного обеспечения. Приведенные шаги помогают обойти эти препятствия и обеспечивают работоспособную установку Ruby 1.9.3-p551 на Ubuntu 18.04.

Оцените материал
Добавить комментарий

Капча загружается...