Установка Ruby на CentOS 7

Понадобилось установить Ruby на сервер с CentOS 7 для выполнения некоторых скриптов. Из стандартных репозиториев устанавливалась очень старая версия, которая мне не подходила. Пришлось собирать последнюю из исходников. Как обычно, не обошлось без подводных камней, о которых расскажу.

Углубленный онлайн-курс по MikroTik

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Самый простой способ установки Ruby на CentOS 7 это установке через yum:

# yum -y install ruby
# ruby -v
ruby 2.0.0p598 (2014-11-13) [x86_64-linux]

На момент написания статьи у меня поставилась версия 2.0.0. Мне она не подходила, так как при установке гема whois я получал сообщение, что версия слишком старая:

ERROR: Error installing whois:
activesupport requires Ruby version >= 2.2.2.

Пришлось удалить установленную версию и искать способ поставить более свежую. Способов на самом деле несколько:

  1. Установить из исходников.
  2. Воспользоваться сторонним репозиторием.
  3. Установить с помощью менеджера управлением пакетами ruby - RVM или rbenv.

Мне первый способ показался самым простым, решил воспользоваться им. Если вы уже установили старую версию через yum, то перед дальнейшими действиями удалите ее:

# yum remove ruby

Устанавливаем необходимые зависимости для сборки и установки ruby:

# yum install -y zlib zlib-devel openssl-devel
# yum groupinstall -y "Development Tools"

Скачиваем последнюю стабильную версию ruby:

# cd /usr/src
# wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz --no-check-certificate
Не забудьте указать последнюю стабильную версию, которая будет на момент вашей установки. У меня указана последняя версия на момент проверки статьи 15.08.2018.

Распаковываем ее и собираем:

# tar -xzvf ruby-*
# cd ruby-*
# ./configure
# make
# make install

Проверяем установленную версию:

# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

Обновляем Rubygems и уже установленные гемы:

# gem update --system
# gem update

Теперь можно приступить к установке интересующего меня гема whois и whois-parser:

# gem install whois
# gem install whois-parser

Установка ruby на CentOS 7

Без проблем установилась нужная версия. Расскажу об ошибках с которыми столкнулся для тех, кто придет сюда из поиска по этим ошибкам. Сначала я получил вот такую ошибку после установки ruby, когда пытался обновить rubygems:

ERROR: Loading command: install (LoadError)
       cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
       undefined method `invoke_with_build_args' for nil:NilClass

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

Потом столкнулся с другой ошибкой:

ERROR: While executing gem ... (Gem::Exception)
       Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources

Здесь сразу стало понятно, что не хватает openssl-devel. Установил этот пакет, снова пересобрал из исходников ruby и установил. После этого ошибок больше не было.

На этом все, последняя версия Ruby 2.3.1 установлена на CentOS 7. Расскажу, зачем я его установил на сервер - для настройки мониторинга времени делегирования домена в zabbix.

Углубленный онлайн-курс по MikroTik.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.

Помогла статья? Подписывайся на telegram канал автора

Анонсы всех статей, плюс много другой полезной и интересной информации, которая не попадает на сайт.

Автор Zerox

Владимир, системный администратор, автор сайта. Люблю настраивать сервера, изучать что-то новое, делиться знаниями, писать интересные и полезные статьи. Открыт к диалогу и сотрудничеству. Если вам интересно узнать обо мне побольше, то можете послушать интервью. Запись на моем канале - https://t.me/srv_admin/425 или на сайте в контактах.

11 комментариев

  1. Pavel Kazmin

    Для тех, кто испытывает трудности с установкой libyaml-develв ​​AlmaLinux 8 или 9, libyaml-develэто часть репозитория CodeReady Builder/PowerTools , которую необходимо включить:

    AlmaLinux 8:

    dnf config-manager --set-enabled powertools
    AlmaLinux 9:

    dnf config-manager --set-enabled crb
    Затем:

    dnf install libyaml-devel
    после чего Ruby 3.2 успешно компилируется.

    https://github.com/rbenv/ruby-build/discussions/2192

    Добавлю в копилку знаний свои грабли с Almalinux 8

  2. Еще раз приветствую, а вот теперь вот такая ошибка

    [root@localhost zabbix-server-mysql]# gem update --system
    ERROR: While executing gem ... (Gem::RemoteFetcher::UnknownHostError)
    timed out (https://api.rubygems.org/specs.4.8.gz)

  3. Сергей

    После такой переустановки ruby у меня вообще накрылось все. До выключения - перестал работа проводник Dolphi. А при включении компьютера - вообще не запускается оболочка. При выполнении команды yum remove ruby у меня было 2 зависимости. Возможно из-за этого. Или не знаю по какой другой причине. Но факт в том, что не могу теперь запустить Centos 7. Только без графичекой оболочки.

    Ошибки, которые возникают:
    [sdb] No Caching mode page found
    [sdb] Assuming drive cache: write throught
    kdf: error getting iommu info. Is the iommu enabled?

    Самое интересное, что в режиме без графической оболочки сам руби не работает.
    # ruby -v
    Выдает ответ, что команда ruby не найдена.
    kdf: Error initializing iommuv2 for device 1002:1313
    kdf: device 1002:1313 NOT added due errors

    • Мой сайт полностью посвещен администрированию серверов. Я ничего и никогда не проверяю с графическими оболочками. И вообще не работаю с ними. Так что ничего подсказать не могу.

      Перечисленные ошибки, кстати, к руби вообще никакого отношения не имеют.

      • Сергей

        Если Вы точно знаете, что у Ruby они отношения не имеют, то, наверное, Вы знаете, к чему имеют? Можете подсказать?

        То, что есть в интернете, совершенно не подходит: зачастую там говорят об ошибках установки или обновления. Или про биос. И вроде бы фигурирет Radeon AMD. Если переустановить графические драйвера это может помочь?

        • Эти ошибки относятся к диску, имя которого фигурирует. А вообще, это все хорошо гуглится. Что поможет - не знаю. Надо внимательно разбираться на месте.

  4. Спасибо Большое.
    Актуально.
    Уже версия 2.5.1

  5. На текущий момент статья полностью актуальна. Только что установил себе ruby по ней.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Нажимая кнопку "Отправить комментарий" Я даю согласие на обработку персональных данных.
Используешь Telegram? Подпишись на канал автора →
This is default text for notification bar