Скомпилированный рубин не может найти проклятия

Я пытаюсь установить sup MUA, но у меня проблемы. Когда я пытаюсь запустить его, он не может найти curses:

/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- curses (LoadError)
...

Я устанавливаю на сервер под управлением CentOS 5. Я скомпилировал ruby ​​и rubygems из исходного кода, а затем установил sup с помощью rubygems. Я следовал этой статье, чтобы собрать рубин.

Я обнаружил наличие аналогичной проблемы на Ubuntu. Исправление предложило установить libcurses-ruby, но я не могу найти пакет с аналогичным именем в CentOS. Я установил пакет ncurses-devel, так как это было необходимо для установки sup с использованием gem. Я также установил гемы ncurses, cursesx и rbcurse, но ни одна из них не устранила проблему.

В вышеприведенной статье о компиляции ruby ​​сказано, что вам нужно перекомпилировать расширение zlib, выполнив:

cd ext/zlib
sudo ruby extconf.rb --with-zlib-include=/usr/include --with-zlib-lib=/usr/lib
cd ../..
sudo make
sudo make install

Поэтому я попробовал несколько вариантов в ext / curses. Верхние несколько строк ext / curses / extconf.rb:

require 'mkmf'

dir_config('curses')
dir_config('ncurses')
dir_config('termcap')

Итак, я попробовал несколько вариантов установки путей:

sudo ruby extconf.rb  --with-curses-include=/usr/include --with-curses-lib=/usr/lib  --with-ncurses-include=/usr/include --with-ncurses-lib=/usr/lib   --with-termcap-lib=/lib
sudo ruby extconf.rb  --with-curses-include=/usr/include --with-curses-lib=/usr/lib    --with-termcap-lib=/lib

и заново делать make, но пока безрезультатно. Любые идеи для продвижения вперед приветствуются.

1 ответ

Решение

Получил в конце. Основная проблема заключалась в том, что последующее make installкомандам не удалось скопировать новые файлы.so в нужное место. Я также обнаружил, что у меня та же проблема с readline, и мне нужно было установить пакет readline-devel (через yum). Так я и сделал

sudo yum install readline-devel
cd ext/curses
sudo ruby extconf.rb
cd ../readline
sudo ruby extconf.rb
cd ../..
sudo make
sudo make install
sudo cp ext/curses/curses.so ext/readline/readline.so /usr/local/lib/ruby/1.8/x86_64-linux/

Очевидно, вы можете использовать каталог i386, если вы не на 64-битной платформе.

Если вы устанавливаете ncurses-devel и readline-devel (а также другие пакеты, упомянутые в статье) перед загрузкой и компиляцией ruby, вам не нужно делать ничего из этого.

Другие вопросы по тегам