CentOC上にRuby 1.8.6 + Rubygems 1.1.1をインストールする

yumでインストールできるのがRuby 1.8.5でしかもRubygemsがレポジトリ内にないので、すべてソースからインストールした。結構ハマったので覚え書き。

Ruby

PATHなど
  • ソース: /usr/src
  • バイナリ: /usr/bin
  • ライブラリ: /usr/lib
作業工程
~ > cd /usr/src
/usr/src > wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p114.tar.bz2
/usr/src > tar jxf ruby-1.8.6-p114.tar.bz2
/usr/src > cd ruby-1.8.6-p114
/usr/src/ruby-1.8.6-p114 > sudo ./configure --prefix=/usr
/usr/src/ruby-1.8.6-p114 > sudo make && sudo make install
確認
~ > ruby -v
ruby 1.8.6 (2008-03-03 patchlevel 114) [i686-linux]
~ > which ruby
/usr/bin/ruby

Rubygems

PATHなど
  • ソース: /usr/src
  • RUBYLIB: /usr/lib
  • GEM_HOME: /usr/lib/ruby/gems/1.8
作業工程
/usr/src > wget http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz
/usr/src > tar xvf rubygems-1.1.1.tgz
/usr/src > cd rubygems-1.1.1
/usr/src/ruby-1.8.6-p114 > sudo ruby setup.rb --prefix=/usr
確認
~ > gem -v
/usr/bin/gem:8:in `require': no such file to load -- rubygems (LoadError)
from /usr/bin/gem:8
環境変数を追加

おいらはzsh使っているので~/.zshrcに以下を追加。変数の設定とexportが分けてあるのはおいらの好み。

RUBYLIB=/usr/lib
GEM_HOME=/usr/lib/ruby/gems/1.8

export RUBYLIB
export GEM_HOME
再度確認
~ > gem -v
1.1.1
~ > gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.1.1
  - RUBY VERSION: 1.8.6 (2008-03-03 patchlevel 114) [i686-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBYGEMS PREFIX: /usr
  - RUBY EXECUTABLE: /usr/bin/ruby
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://gems.rubyforge.org

とりあえずは大丈夫っぽい?

gemのupdate
~ > sudo gem update
/usr/bin/gem:8:in `require': no such file to load -- rubygems (LoadError)
from /usr/bin/gem:8
sudoでの環境変数

http://blog.studiohff.net/200711/debiansargesudo_gem.htmlによると、sudoのセキュリティ強化で起こっているらしいです。/etc/sudoersをvisudoで編集します。

~ > sudo /usr/sbin/visudo
Defaults env_keep+="PATH GEM_HOME RUBYLIB"

今回はPATHは特にいじってないけど、一応持っていく。

~ > sudo gem update
/usr/lib/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- zlib (LoadError)
from /usr/lib/rubygems/custom_require.rb:27:in `require'
from /usr/lib/rubygems/package.rb:10
from /usr/lib/rubygems/custom_require.rb:27:in `gem_original_require'
from /usr/lib/rubygems/custom_require.rb:27:in `require'
from /usr/lib/rubygems/format.rb:9
from /usr/lib/rubygems/custom_require.rb:27:in `gem_original_require'
from /usr/lib/rubygems/custom_require.rb:27:in `require'
from /usr/lib/rubygems/installer.rb:11
 ... 11 levels...
from /usr/lib/rubygems/command_manager.rb:103:in `process_args'
from /usr/lib/rubygems/command_manager.rb:74:in `run'
from /usr/lib/rubygems/gem_runner.rb:39:in `run'
from /usr/bin/gem:22

zlibがloadできないと言っているので、zlibをサポートするようにしてみよう。

zlibサポートの追加
~ > sudo yum install zlib-devel
~ > cd /usr/src/ruby-1.8.6-p114/ext/zlib
/usr/src/ruby-1.8.6-p114/ext/zlib > sudo ruby extconf.rb --with-zlib-include=/usr/include --with-zlib-lib=/usr/lib
/usr/src/ruby-1.8.6-p114/ext/zlib > sudo make all && sudo make install
~ > sudo gem update
Updating installed gems
Nothing to update

できた。

gem install
~ > sudo gem install rails
Updating metadata for 1 gems from http://gems.rubyforge.org/
.
complete
Bulk updating Gem source index for: http://gems.rubyforge.org/
Successfully installed rake-0.8.1
Successfully installed activesupport-2.0.2
Successfully installed activerecord-2.0.2
Successfully installed actionpack-2.0.2
Successfully installed actionmailer-2.0.2
Successfully installed activeresource-2.0.2
Successfully installed rails-2.0.2
7 gems installed
Installing ri documentation for rake-0.8.1...
Installing ri documentation for activesupport-2.0.2...
Installing ri documentation for activerecord-2.0.2...
Installing ri documentation for actionpack-2.0.2...
Installing ri documentation for actionmailer-2.0.2...
Installing ri documentation for activeresource-2.0.2...
Installing RDoc documentation for rake-0.8.1...
Installing RDoc documentation for activesupport-2.0.2...
Installing RDoc documentation for activerecord-2.0.2...
Installing RDoc documentation for actionpack-2.0.2...
Installing RDoc documentation for actionmailer-2.0.2...
Installing RDoc documentation for activeresource-2.0.2...

Rubyオンリーのは大丈夫。CやC++で書かれたものも試してみる。

~ > sudo gem install thin
Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
Successfully installed rack-0.3.0
Successfully installed daemons-1.0.10
Successfully installed eventmachine-0.10.0
Successfully installed thin-0.8.0
4 gems installed
Installing ri documentation for rack-0.3.0...
Installing ri documentation for daemons-1.0.10...
Installing ri documentation for eventmachine-0.10.0...
Installing ri documentation for thin-0.8.0...
Installing RDoc documentation for rack-0.3.0...
Installing RDoc documentation for daemons-1.0.10...
Installing RDoc documentation for eventmachine-0.10.0...
Installing RDoc documentation for thin-0.8.0...

うまくいった模様。これで大丈夫かな。

一応Railsが動くか試してみる

railsプロジェクトの生成とWEBRickの起動
~ > rails rails
create
(中略)
~ > cd rails
~/rails > ruby script/server
=> Booting WEBrick...
/usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/initializer.rb:159:in `require_frameworks': no such file to load -- openssl.so (RuntimeError)
        from /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/initializer.rb:88:in `process'
        from /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/initializer.rb:49:in `send'
        from /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/initializer.rb:49:in `run'
        from /home/koutarou/src/rails/config/environment.rb:13
        from /usr/lib/rubygems/custom_require.rb:27:in `gem_original_require'
        from /usr/lib/rubygems/custom_require.rb:27:in `require'
        from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:496:in `require'
        from /usr/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:342:in `new_constants_in'
         ... 7 levels...
        from /usr/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/commands/server.rb:39
        from /usr/lib/rubygems/custom_require.rb:27:in `gem_original_require'
        from /usr/lib/rubygems/custom_require.rb:27:in `require'
        from script/server:3

今度はopensslか。zlibサポート入ってなかったからもしかしたらとは思ったけどさ。

opensslサポートの追加
~ > sudo yum install openssl-devel
~ > cd /usr/src/ruby-1.8.6-p114/ext/openssl
/usr/src/ruby-1.8.6-p114/ext/openssl > sudo ruby extconf.rb
/usr/src/ruby-1.8.6-p114/ext/openssl > sudo make all && sudo make install

なんか警告でた気もするけどmakeは通ってインストールも終了。

もう一度WEBRickを起動してみる
~/rails > ruby script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000
=> Ctrl-C to shutdown server; call with --help for options
[2008-04-18 16:43:08] INFO  WEBrick 1.3.1
[2008-04-18 16:43:08] INFO  ruby 1.8.6 (2008-03-03) [i686-linux]
[2008-04-18 16:43:08] INFO  WEBrick::HTTPServer#start: pid=22770 port=3000