Ruby on RailsのWebサイトでは、LinuxでソースからRubyをインストールすることを推奨しています。Ubuntu9のクリーンインストールでソースからrubyをビルドする際にCライブラリの問題がいくつか発生しました。
Ubuntuへのrubyのインストールについてネット上で見つけたすべての手順には、事前にパッケージ化された(.debベースの)rubyの使用が含まれています。明らかに、これは人々が推奨するものではありません。
rubyのクリーンソースビルドを実行したとき、zlib拡張機能が機能しなかったためにRubygemsをインストールできなかったことがわかりました。
2つの問題が発生します。
1)zlib拡張機能がビルドされていません。
解決:
i)rubyソースのextnディレクトリ内のセットアップファイルでzlibのコメントが解除されていることを確認します。
ii)これらのzlibubuntuパッケージがインストールされていることを確認します。
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内の他の拡張機能で発生するようです。
モジュールがロードに失敗する理由を見つける方法はありますか?ある種のトレース/冗長モード?