Ruby 1.9.2 и Ubuntu 11.10

Сегодня товарищ на работе обновил Ubuntu до версии 11.10 (Oneiric Ocelot). Ну и начали ловить первые баги. В этом посте я расскажу, как поставить Ruby 1.9.2.Итак ставили Ruby как обычно, по этому мануалу. Однако потом наткнулись на несколько глюков. Во первых после установки ruby-1.9.2 и выполнении

версия показывалась не та, что ставилась:

«SSLv2_method» undeclared here

Оказалось, что в системе установлены пакеты со старым руби. Мы снесли их вот так:

После этого начали ставить новый руби (1.9.2) через rvm, и тут на нас вылезла куча ошибок:

Нехитрым гуглением я понимаю, что проблема кроется в несовместимости Ruby 1.9.2 и LibSSL 1.0. Версия libssl 0.9.8 работает нормально, однако при попытке удаления 1.0 пакетный менеджер показал около сотни пакетов на удаление. Я всё же не решился удалять пол-системы и начал искать другой выход.

Я нашел небольшой патч. Итак исправляем два файла: extconf.rb и ossl_ssl.c, которые у меня лежали вот здесь: /usr/local/rvm/src/ruby-1.9.2-p180/ext/openssl
После этого пытаемся второй раз поставить ruby и нам это удается. Проблема решена!

no such file to load mkmf (LoadError)

После этого версия стала показываться нормальная, однако наш гем (starling), который мы хотели установить – не ставился. А писал нам вот такие ошибки:

Выяснилось, что этот модуль (mkmf) содержится в dev-пакете руби. Однако нашей ошибкой было то, что мы ставили пакет ruby1.8-dev, он и перекрывал текущий интерпретатор. Решение всё-же нашлось. Надо было поставить другой пакет, который при первичном поиске не выдавался:

В нём есть нужный модуль, и он всё-таки из ветки 1.9.x.
После этого гем поставился нормально и мы получили на машине свежий руби и starling.

Leave a Comment