ruby -v
→ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-linux]
RubyGemsをいインストールすると下記のエラーが出てしまいます。ググッたのですが解決できませんでした。解決法を教えて頂けませんでしょうか。
# wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz
# tar xzf rubygems-1.3.7.tgz
# cd rubygems-1.3.7
# ruby setup.rb
"./lib/rubygems.rb:12:in 'require': no such file to load --etc (LoadError)
from ./lib/rubygems.rb:12
from setup.rb:24:in 'require'
from setup.rb:24.
CentOSについて詳しくないため間違ってたらごめんなさい。
質問のエラーの意味は「etcライブラリをロード出来なかった」です。もしRubyをrpmのパッケージを使ってインストールしたならば、ruby-libsというパッケージもインストールしましたでしょうか? ググッてみると rpm では etc.so というetcライブラリに必要なファイルはruby本体とは別に配布されているようです。以下は参考にしたページです。
http://rpm.pbone.net/index.php3/stat/4/idpl/13488848/dir/centos_...
ですので、もしまだruby-libsをインストールしていなければインストールすることで解決するかもしれません。
もしRubyを自前でビルドした場合は、(ビルドしたディレクトリ)/ext/etc/mkmf.logにビルド出来なかった原因が出力されているかもしれません。
etcライブラリがインストールされたかどうかは、コマンドラインで以下を実行して、エラーメッセージがでなければ大丈夫です。
% ruby -retc -e 0
おそらくRubyを正しくインストールできていません。
$ ruby -retc -e ''
$ ruby -rsocket -e ''
$ ruby -rstringio -e ''
などを実行してLoadErrorが発生するようであれば標準添付の拡張ライブラリがロードできていない状態です。
$ ruby -e 'p $LOAD_PATH'
でライブラリのロードパスが表示されますので、そのディレクトリ内に etc.so や socket.so などがあるかを確認してください。
i686-linux ですと /usr/lib/ruby/site_ruby/1.8/i686-linux や /usr/local/lib/ruby/site_ruby/1.8/i686-linux あたりのはずです。
もし etc.so などがインストールできていない場合、Rubyをどのようにインストールしたかを教えていただければ、アドバイスできるかもしれません。
http://www.google.co.jp/ ダミーです。
御返答ありがとうございます。上記3つともLoadErrorが発生しました。LOAD_PATHは/usr/lib/ruby以下のフォルダが8個ほど表示されました。/usr/lib/ruby/site_ruby/1.8/i686-linuxと/usr/local/lib/は両方とも空フォルダでetc.soやsocket.soなどは見当たりませんでした。find /usr/lib/ruby -name *.soでも何も表示されませんでした。アドバイスを頂けると大変助かります。
御返答ありがとうございます。仰るとおり拡張ライブラリがロード出来ていない状態でした。
CentOS 5.5を最小インストールした後、rootのまま
yum -y update
reboot
yum install gcc zlib-devel wget
wget ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p302.tar.gz
tar xzvf ruby-1.8.7-p302.tar.gz
cd ruby-1.8.7-p302
./configure --prefix=/usr
make
make test
→test succeeded
make install
ruby -v
→ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-linux]
という形でインストールしました。
/root/ruby-1.8.7-p302/ext/etcには.cvsignore, depend, etc.c, etc.txt, ext.txt.ja, extconf.rbのみで、mkmf.logというファイルは存在しませんでした。
もう少し勉強してみます。