Как обновить Ruby в RHEL

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

Как обновить Ruby до новой версии в RHEL.

Когда я пытаюсь – sudo yum install ruby он говорит

Пакет ruby-2.0.0.648-33.el7_4.x86_64 уже установлен и является последним

версией Нечего делать

Когда я пытаюсь – sudo yum install @ruby2.5 он говорит,

Загруженные плагины: fastestmirror, langpacks Репозиторий ‘UIM_install’ не имеет

имени в конфигурации, используйте id Репозиторий ‘debug’ не имеет

имени в конфигурации, используйте id Репозиторий nodesource упоминается более

один раз в конфигурации Репозиторий nodesource-source упоминается

более одного раза в конфигурации Репозиторий ‘opencl’ не имеет

имени в конфигурации, используйте id Загружаю скорости зеркал из кэша

hostfile Группа ruby2.5 не существует. Ошибка: Нечего делать

Мне нужна последняя версия Ruby в системе. Какое решение?

Редактировать:

Я попробовал sudo yum update ruby и получил следующий ответ.

Загружаю скорости зеркал из кэша hostfile

Нет пакетов, отмеченных для обновления

Вы можете получить новые версии Ruby через Red Hat Software Collections.

Как только вы установите репозиторий rhscl, вы можете установить пакеты SCL Ruby. Эти пакеты находятся рядом с версией Ruby, установленной из базовых репозиториев, поэтому вы не будете использовать /usr/bin/ruby. SCL “rh-ruby25” включает Ruby 2.5, но также есть Ruby 2.6 (rh-ruby26), если вам нужна более новая версия.

Преимущество использования SCL в том, что он поддерживается Red Hat, устанавливается через yum, как и всё остальное, и вы получаете обновления безопасности. Недостаток в том, что он соседствует с базовым Ruby, поэтому вам нужно быть осторожным, чтобы загрузить SCL перед его использованием. Инструкции находятся по представленному ссылке.

В общем, я никогда не пытаюсь использовать версии Ruby (или Rails), упакованные в любой дистрибутив Linux, они почти всегда слишком старые для того, что мне нужно – вместо этого я загружаю любую версию, которая мне нужна, используя RVM. Если вы сделаете это, вам нужно установить более новую версию Ruby в другой каталог, чем Ruby, предоставленный дистрибутивом, а затем вы можете положить этот каталог в ваш $PATH впереди бинарников, предоставленных дистрибутивом, если хотите.

Инструкции RVM для ленивых (или людей, которые предпочли бы, чтобы этот бред действительно работал с самого начала):

$ sudo dnf remove ruby

Убедитесь, что он не удаляет ничего, что вам действительно нужно. К счастью, ничего из того, на что я полагался, не зависело от Ruby.

Установите RVM (менеджер версий Ruby). Они заставляют вас делать бессмысленный танец с ключами, хотя это не имеет никакого эффекта на безопасность.

gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable

Запустите новую оболочку.

Проверьте https://www.ruby-lang.org/en/downloads/, чтобы увидеть последнюю версию Ruby.
К сожалению, не похоже, чтобы существовал флаг --latest. Увы.

rvm install 3.3.0

Вас попросят ввести пароль sudo, чтобы установить некоторые зависимости (ура!)

Затем он соберет Ruby из исходников. Да, у Ruby такая же безумная установка UX, как и у Python. Я не помню, чтобы Go или Rust собирали себя из исходников, когда я их устанавливал. Увы.

Вы получите ошибку:

Ошибка при выполнении 'run_gem_wrappers regenerate',
пожалуйста, прочитайте /home/you/.rvm/log/1706528997_ruby-3.3.0/gemset.wrappers.global.log

Найдите в гугле. Попробуйте первое предложение (установить libtool). Он уже был установлен. Попробуйте второе предложение:

sudo dnf install libyaml-devel

Попробуйте снова

$ rvm install 3.3.0
Уже установлен ruby-3.3.0.
Чтобы переустановить используйте:

    rvm reinstall ruby-3.3.0

Ложь. Попробуйте версию reinstall.

Успех, наконец! Кто бы мог подумать, что обновление программного обеспечения может быть таким простым?

Редактировать: Сказал слишком рано:

$ rvm use 3.3.0

RVM не является функцией, выбор Ruby с помощью 'rvm use ...' не сработает.

Вам нужно изменить настройки вашего терминального эмулятора, чтобы разрешить входную оболочку.
Иногда необходимо использовать `/bin/bash --login` в качестве команды.
Пожалуйста, посетите https://rvm.io/integration/gnome-terminal/ для примера.

Не делайте то, что он говорит; просто переместите последнюю строку .bash_profile, которую он добавил, в .bashrc вместо этого.

Простая 12-шаговая процедура!

Чтобы сэкономить вам время на поиск еще одной команды:

rvm --default use 3.3.0

Redhat и CentOS не предоставляют последнюю версию различных программ. Это происходит из-за того, что это LTS (долгосрочная поддержка) операционная система. Выпускаются только обновления безопасности и мелкие обновления. Для установки более высокой версии программного обеспечения лучше компилировать самостоятельно и НЕ ЗАМЕНЯТЬ СУЩЕСТВУЮЩУЮ ВЕРСИЮ. Это связано с тем, что (возможно) операционная система опирается на скрипты/инструменты, написанные с использованием старой конкретной версии. Замена на другую может привести к сбоям чего-то.

Ответ или решение

Как обновить Ruby в RHEL (Red Hat Enterprise Linux)

Обновление Ruby в RHEL может быть непростой задачей из-за особенностей управления пакетами в этой системе. Он включает использование yum или dnf, которые по умолчанию устанавливают только стабильные версии программного обеспечения, доступны из официальных репозиториев. Если вы столкнулись с проблемой, что версия Ruby на вашем сервере устарела, следуйте приведенным ниже методам.

1. Понимание проблемы

При попытке установить более новую версию Ruby с помощью команд, таких как:

sudo yum install ruby

или

sudo yum install @ruby2.5

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

2. Установка Ruby из Software Collections (SCL)

Red Hat обеспечивает наличие более новых версий программного обеспечения, включая Ruby, через Red Hat Software Collections (SCL). Это рекомендованный способ установки новых версий Ruby на RHEL, так как SCL гарантирует поддержку и обновления безопасности.

Шаги для установки Ruby через SCL:
  1. Включите репозиторий SCL:
    Вам нужно будет установить пакет rhc, который предоставляет доступ к SCL. Для этого используйте следующую команду:

    sudo yum install centos-release-scl
  2. Установите нужную версию Ruby:
    После включения репозитория, вы сможете установить более новые версии Ruby:

    sudo yum install rh-ruby25

    или для Ruby 2.6:

    sudo yum install rh-ruby26
  3. Запустите Ruby:
    Чтобы использовать установленную версию, вам нужно будет переключиться на SCL:

    scl enable rh-ruby25 bash

    Это откроет новую оболочку с активированной версией Ruby.

3. Использование RVM (Ruby Version Manager)

Если SCL не подходит, вы можете использовать Ruby Version Manager (RVM). Это инструмент, который позволяет устанавливать и управлять несколькими версиями Ruby в одном окружении.

Шаги для установки RVM:
  1. Удалите устаревшую версию Ruby:

    sudo dnf remove ruby

    Убедитесь, что это не повлияет на другие приложения.

  2. Установите RVM:
    Сначала установите ключи:

    gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

    Затем выполните установку RVM:

    \curl -sSL https://get.rvm.io | bash -s stable
  3. Перезапустите оболочку:
    Это позволит RVM полностью загрузиться.

  4. Установите последнюю версию Ruby:
    Проверьте последнюю доступную версию на официальном сайте Ruby и выполните установку:

    rvm install 3.3.0
  5. Используйте новую версию Ruby:

    rvm use 3.3.0 --default

Это установит Ruby 3.3.0 как версию по умолчанию.

4. Итог

Обновление Ruby в RHEL не так сложно, как кажется. Вы можете использовать Red Hat Software Collections для установки актуальных версий (например, Ruby 2.5 или 2.6), что позволяет избежать конфликтов с установленной системой. Либо используйте RVM, чтобы управлять несколькими версиями Ruby. Оба метода безопасны и просты в реализации.

Для дополнительной помощи и ресурсов обратитесь к официальной документации по RHEL и Ruby или к сообществу пользователей Ruby.

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

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