rubikitch / ruby-lang.org さんは書きました: >> ■エラー内容■ >> Debian 4 GNU/Linuxで、RubyGemsをソースからコンパイルしようとすると、 >> 以下のようなエラーが起きました。apt-getでRubyGemsをインストールすると、 >> やはり動いてくれませんでした。 >> >> ○エラー1 >> Linux 2.6.18-6-686 #1 SMP Fri Jun 6 22:22:11 UTC 2008 i686 GNU/Linux >> ruby 1.8.7 (2008-06-09 patchlevel 17) [i686-linux] >> >> # ruby setup.rb > > zlib拡張ライブラリがインストールされていないようです。 > > Debian GNU/LinuxのRuby関連パッケージは変則的なのでこのような問題が起こります。 > たとえば、irbやriが別パッケージになっていてインストールされなかったりとかです。 > だからこそソースからインストールしています。 えーと、変則的といわれますが、 複数のバイナリパッケージに分かれているのは それほどめずらしいことではありません。 分け方が好みに合わないという意見はうかがいますが。 # これでもDebian/etchにするときに議論の上で変更したんですよ ;-) それはおきまして、 もう少し調べていただけるとよいなあと思います。 >> ruby 1.8.7 (2008-06-09 patchlevel 17) [i686-linux] このバージョンのRubyはDebian/etchのパッケージにはありません。 よってソースからインストールされたのだと思います。 zlib.soがないのはzlibの開発環境がインストールされていない環境で Rubyをインストールしたからではないかと思います。 >> ○エラー2 >> ruby 1.9.0 (2008-06-20 revision 17482) [i686-linux] >> /usr/local/lib/ruby/1.9.0/rubygems/spec_fetcher.rb:1:in `require': no >> such file to load -- zlib (LoadError) こちらについても、/usr/localをパッケージでは使いませんから ソースからインストールされたのだと思います。 # ついでにいいますと、Debianのパッケージのarchは # i486-linuxになっているはずです。 (示されたバージョンによるとそうではないと思いますが) バイナリパッケージをお使いであれば、 つまりruby1.8パッケージまたはrubyパッケージを インストールされているのであれば > パッケージ版のrubyならば、 > sudo apt-get install libruby1.8 これ(↑)は必要ありません。 パッケージ機能で自動的にインストールされているはずです。 また、 > sudo apt-get install libzlib-ruby > で解決すると思います。 Debian/etchのlibruby1.8パッケージには zlib.soが含まれていますのでこれ(↑)も必要ありません。 > RubyインタプリタとRubyGemsをソースからインストールしてしまえば、 > あとはgemでapt同様簡単にライブラリをインストールできるので。 とにかくRubyを構築するというのは多くの環境で容易だと思いますが 必要な拡張モジュールを含めて構築するためには それなりの準備が必要になると思います。 zlib.soにはzlibの開発環境が必要とかそういったことですね (zlibの開発環境はzlib1g-devですね)。 Debian系(Vine Linuxでも)でRubyを構築する際のヒントですが、 /etc/apt/sources.listにdeb-srcの行 (deb-src http://ftp.jp.debian.org/debian etch mainなど) を追加し、apt-get updateを行った上で apt-get build-dep ruby1.8を特権で実行することで ruby1.8パッケージを構築した際に使用された 開発環境をまとめてインストールすることができます。 オプションの指定が必要なところもあるかもしれませんが ソースからRubyを構築する場合であっても 開発環境を整える助けになると思います。おためしください。 なお、バイナリパッケージでインストールしたのにもかかわらず >> 以下のようなエラーが起きました。apt-getでRubyGemsをインストールすると、 >> やはり動いてくれませんでした。 ということであれば、それはバイナリパッケージのバグの可能性があります。 可能ならバグ報告をしてください。 -- ay