Сайт 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.
Есть ли способ узнать, почему модуль не загружается? какой-то режим трассировки / многословия?