Ruby on Rails 网站建议在 Linux 下从源代码安装 Ruby。我在全新安装的 Ubuntu 9 上从源代码构建 ruby 时遇到了许多 C 库问题。
我在网上找到的关于在 Ubuntu 上安装 ruby 的所有说明都涉及使用预打包(基于.deb)的 ruby。显然,这不是人们推荐的铁轨。
当我对 ruby 进行干净的源代码构建时,我发现 Rubygems 无法安装,因为 zlib 扩展不起作用。
出现两个问题:
1) zlib 扩展未构建。
解决方案:
i) 确保 zlib 在 ruby 源的 extn 目录中的 Setup 文件中未注释,并且
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'
我观察到 extn 目录中的任何数量的其他 C 扩展都会发生这种情况,因此这些扩展似乎是一个更普遍的问题,而不仅仅是 zlib 特定的问题。
总结一下:
- 我的 ruby 构建找到了特定于 ruby 的 C zlib 扩展,但它无法加载 zlib 模块。
- 此行为似乎发生在 /extn 中的其他扩展上。
有没有办法找出模块无法加载的原因?某种跟踪/详细模式?