Веб-сайт 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.
Есть ли способ узнать, почему модуль не загружается? какой-то режим трассировки/подробности?
require
объяснить, что означаетfalse
: redmine.ruby-lang.org/issues/5210 - person Andrew Grimm   schedule 22.08.2011