编译后的 ruby​​ 无法找到 curses

编译后的 ruby​​ 无法找到 curses

我正在尝试安装高级 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​​ 和 ruby​​gems,然后使用 ruby​​gems 安装了 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(以及文章中提到的其他软件包),则您不需要执行任何上述操作。

相关内容