CentOS 5のRuby、はまり処

 CentOS5.2でyumを使ってrubyを入れると、ruby 1.8.5が入る。一応rails動くからいいかなぁ、などと思って使おうとすると、意外とはまったのでメモ。



なんではまるかというと、Rubyのパッケージが複数に分かれていて、yum install rubyとしただけだと、意図するものが入らない。


  • ruby
  • ruby-devel
  • ruby-irb
  • ruby-libs
  • ruby-rdoc
  • ruby-ri



普通にRubyを使おうと思ったら、上記全部入れておく必要がある。



でないと、こんなことになる。



例1:railsを入れたときにwarning

(rdocがないから)


[furukawa src]$ sudo gem install rails --remote
Bulk updating Gem source index for: http://gems.rubyforge.org
Successfully installed rake-0.8.1
Successfully installed activesupport-2.1.0
Successfully installed activerecord-2.1.0
Successfully installed actionpack-2.1.0
Successfully installed actionmailer-2.1.0
Successfully installed activeresource-2.1.0
Successfully installed rails-2.1.0
7 gems installed
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- rdoc/rdoc (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /usr/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:68:in `load_rdoc'
from /usr/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:38:in `generate



例2:sqlite-rubyを入れたとき、ヘッダがないといわれる

(ヘッダファイルがないから)


[furukawa src]$ sudo gem install sqlite-ruby
Building native extensions.  This could take a while...
ERROR:  Error installing sqlite-ruby:
ERROR: Failed to build gem native extension.
/usr/bin/ruby extconf.rb install sqlite-ruby
can't find header files for ruby.
:



例2:sqlite-rubyを入れたとき、irbがないといわれる

(irbがないから)


[furukawa src]$ sudo gem install sqlite-ruby
Building native extensions.  This could take a while...
Successfully installed sqlite-ruby-2.2.3
1 gem installed
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- irb/slex (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
:



Rubygem-develでも、「それはまずかったと思う」と指摘されています。

Maybe it should more gracefully fail. I was using CentOS at the
time, and had installed ruby with 'yum install ruby'. It is an additional
install 'yum install irb' to get irb. :(

(Re: error when irb not installed: msg#00092)



 メンテナの方がパッケージを分けたのにはそれなりの理由があるのだと思いますし、

#サーバ上だと、Rubyで書いたプログラムさえ動けばいいからかなぁ?



とはいえ、Rubyはirbも含めてRubyだと思っている人にとって見ればびっくりする状況だと思うので、とりあえず情報提供としてブログに書いておきます。





(追記)

yum一発でなんでも入る状況が空気のように当然になっていて、逆に動かないときだけ非難されちゃうメンテナの方はとても大変だと思います。この記事も、別にメンテナの方を非難したいわけではなくて、当面困らないための情報提供として書かせていただいた次第。日本語で書いて通じるかどうか知りませんが、メンテナの方々にはとても感謝していることを、ここに明記しておきます。