кто-нибудь пробовал устанавливать ruby ​​и rubygems из исходников на Ubuntu (желательно Ubuntu 9)?

Веб-сайт Ruby on Rails рекомендует устанавливать Ruby из исходного кода под Linux. Я столкнулся с рядом проблем с библиотекой C при сборке ruby ​​из исходного кода при чистой установке Ubuntu 9.

Все инструкции, которые я нашел в сети по установке ruby ​​в Ubuntu, включали использование предварительно упакованного (на основе .deb) ruby. Ясно, что это не то, что рекомендуют люди на рельсах.

Когда я сделал сборку Ruby с чистым исходным кодом, я обнаружил, что Rubygems не удалось установить, потому что расширение zlib не работает.

Возникают две проблемы:

1) Расширение zlib не построено.

Решение:

i) убедитесь, что zlib раскомментирован в файле установки в каталоге extn источника ruby, и

ii) убедитесь, что эти пакеты zlib ubuntu установлены:

aptitude install zlib1g
aptitude install zlib1g-dbg
aptitude install zlib1g-dev
aptitude install zlibc

2) После устранения проблемы 1 выше (и полной пересборки ruby) zlib по-прежнему не работает, потому что расширение не загружается.

Вы можете увидеть, что модуль не загружается, запустив это и получив вывод «false»:

puts require 'zlib'

Я заметил, что это происходит с любым количеством других расширений C в каталоге extn, поэтому, похоже, это более общая проблема с этими расширениями, чем просто что-то специфичное для zlib.

Обобщить:

  • Моя сборка ruby ​​​​находит специфичное для ruby ​​​​расширение C zlib, но не может загрузить модуль zlib.
  • Похоже, такое поведение происходит с другими расширениями в /extn.

Есть ли способ узнать, почему модуль не загружается? какой-то режим трассировки/подробности?


person Dafydd Rees    schedule 09.08.2009    source источник
comment
возможный дубликат Почему yaml недоступен в рабочей среде?   -  person Andrew Grimm    schedule 22.08.2011
comment
Собственно другой вопрос - это дубликат, это же оригинал. Неважно. В любом случае, поскольку это распространенное заблуждение, я попросил RDoc require объяснить, что означает false: redmine.ruby-lang.org/issues/5210   -  person Andrew Grimm    schedule 22.08.2011


Ответы (3)


Я не вижу, в чем твоя проблема. Вы говорите, что require 'zlib' возвращает false. Но это означает, что это действительно сработало! Если бы произошла ошибка, вы бы получили исключение LoadError.

person Jörg W Mittag    schedule 10.08.2009
comment
Педантичное предложение по грамматике: заменить это сработало на уже сработавшее? - person Andrew Grimm; 22.08.2011

Вот что я сделал, чтобы установить ruby, gems и rails на Ubuntu 11.04

  • Установить рубин из исходников

  • Установите RubyGems из исходников

  • Install zlib:
    • sudo apt-get install zlib1g-dev
    • cd your-ruby-sources/ext/zlib
    • рубиновый extconf.rb
    • сделать
    • судо сделать установить
  • Install readline:
    • sudo apt-get install libreadline5-dev
    • cd your-ruby-sources/ext/readline
    • рубиновый extconf.rb
    • сделать
    • судо сделать установить
  • Install openssl:
    • sudo apt-get install libssl-dev
    • cd your-ruby-sources/ext/openssl
    • рубиновый extconf.rb
    • сделать
    • судо сделать установить
person Evgenii    schedule 19.08.2011

Вы установили libzlib-ruby? Вот моя типичная инициализация Ubuntu перед установкой Rubygems:

$ apt-get update
$ apt-get dist-upgrade
$ apt-get install build-essential -y
$ apt-get install rsync -y
$ apt-get install ruby ri rdoc irb ri1.8 ruby1.8-dev libzlib-ruby zlib1g libopenssl-ruby -y
person Ryan McGeary    schedule 09.08.2009