Назад | Перейти на главную страницу

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

Я пытаюсь установить 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, но пока безрезультатно. Любые идеи по его продвижению приветствуются.

Добрался до конца. Основная проблема заключалась в том, что последующие 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, вам не нужно ничего делать из этого.