Понадобилось установить Ruby на сервер с CentOS 7 для выполнения некоторых скриптов. Из стандартных репозиториев устанавливалась очень старая версия, которая мне не подходила. Пришлось собирать последнюю из исходников. Как обычно, не обошлось без подводных камней, о которых расскажу.
Научиться настраивать 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.
Пришлось удалить установленную версию и искать способ поставить более свежую. Способов на самом деле несколько:
- Установить из исходников.
- Воспользоваться сторонним репозиторием.
- Установить с помощью менеджера управлением пакетами 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
Распаковываем ее и собираем:
# 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, когда пытался обновить 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 с нуля или систематизировать уже имеющиеся знания можно на углубленном онлайн-курcе по администрированию MikroTik. Автор курcа – сертифицированный тренер MikroTik Дмитрий Скоромнов. Более 40 лабораторных работ по которым дается обратная связь. В три раза больше информации, чем в MTCNA.
Для тех, кто испытывает трудности с установкой 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
Еще раз приветствую, а вот теперь вот такая ошибка
[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)
С сервера нет доступа к урлу https://api.rubygems.org/specs.4.8.gz хотя у меня он открывается.
Странно, на сквиде даже в логах нет ничего, как будто бы сервер и не пытается туда попасть
Разобрался.
Удалось все установить с помощью gem update -p и адрес прокси...
Вообще очень странно, ибо в самом начале я указывал адрес прокси. :)
После такой переустановки 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. Если переустановить графические драйвера это может помочь?
Эти ошибки относятся к диску, имя которого фигурирует. А вообще, это все хорошо гуглится. Что поможет - не знаю. Надо внимательно разбираться на месте.
Спасибо Большое.
Актуально.
Уже версия 2.5.1
На текущий момент статья полностью актуальна. Только что установил себе ruby по ней.