Решение проблемы

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


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

Самый простой способ установки 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.


СМОТРИ ТАКЖЕ