我正在尝试安装高级 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,然后使用 rubygems 安装了 sup。我遵循本文编译 ruby。
我已经发现在 ubuntu 上遇到类似问题。修复建议安装 libcurses-ruby,但我在 CentOS 中找不到类似名称的包。我安装了 ncurses-devel 包,因为这是使用 gem 安装 sup 所必需的。我还安装了 ncurses、cursesx 和 rbcurse gem,但这些都没有解决问题。
上面关于编译 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
并重新制作,但目前还没有任何效果。欢迎提出任何推进的想法。
答案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/
显然,如果您不是在 64 位平台上,您可能想要使用 i386 目录。
如果您在下载和编译 ruby 之前安装了 ncurses-devel 和 readline-devel(以及文章中提到的其他软件包),则您不需要执行任何上述操作。