Cent OS 5.2 への Ruby On Rails 環境のインストール

Written by @dr_taka_n at 2008/07/13 22:50 [, ]

この作業記録は 2008/07/13 に行ったものであり、現在の状況と若干異っている可能性もある。ただ、最近参照されているサイトの内容を見ていても、手順的には問題無いようなのでそのままの記載を残すことにする。(2009/04/21)

もし、最近のバージョンで試してみて問題のある記述があった場合には、コメント頂けるとありがたい。

環境と実施しようとしていること

Cent OS のバージョン。

$ cat /etc/redhat-release
CentOS release 5.2 (Final)

上記 Cent OS に Ruby、Ruby On Rails をインストールする。 Cent OS 自体のインストールは、最小構成でインストールを行っている。

当然(?)ながら、Cent のパッケージ管理ツール yum で管理されているそれぞれのソフト ウェアはバージョンが古いものとなっている。ソースからコンパイルして入れるのもアリ だが、ここでは一度 RPM パッケージングした後にインストールする手順をとる。

Ruby はライブラリのパッケージ管理を行うための仕組みを持っている。

上記の Ruby Gems と言われるものだが、Ruby にまだ慣れておらず、Perl を知っている方 には、CPAN のようなもの、と言ってみると何をするものなのかピンとくるかもしれない。

Ruby を入れて、RubyGems を入れてしまえば、後の Ruby ライブラリ管理(その1つ1つの 単位を Gem と言う)は、gem コマンドを使って行える。Ruby On Rails もその範囲に含ま れる。

また、Ruby On Rails では、

  • SQLite3
  • RMagic (ImageMagick を Ruby から使用するライブラリ)

の使用を想定しているので、それらのインストールも行う。

事前準備

gcc 関連のライブラリが必要になるので、インストールされていない場合にはインストー ルしておく。

# yum install gcc* compat-gcc* compat-lib*

yum はパッケージグループでも管理されており、ここでは開発系のパッケージグループを まとめてインストールしておく。

# yum groupinstall 'Development Libraries'

ちなみに、上記でインストールされる’Development Libraries’のパッケージグループに 何が含まれているのかは、以下で確認が行える。

# yum groupinfo 'Development Libraries'

また、どのようなパッケージグループがあるのかは、以下で確認が行える。

# yum grouplist hidden

この後、ソースから RPM を作成するのだが、その際に必要なパッケージもインストール しておく。

  • rpm-build
  • checkinstall

の2つになる。

まずは rpm-build。

# yum install rpm-build

checkinstall はデフォルトの yum のリポジトリには含まれていないので、リポジトリを 追加しておく。まずは適当なディレクトリで必要なファイルをダウンロードしておく。

$ wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
$ wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

以下は、root で作業。

# rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm

yum のリポジトリファイルを編集しておく。

# vi /etc/yum.repos.d/rpmforge.repo

上記ファイルの enabled = 1enabled = 0 に変更しておく。

この作業は必須ではない。やっていることは、yum コマンドで今追加したリポジトリを常 時参照するのではなく、指定した時にだけ参照してもらうようにした。

KEY ファイルをインポートして、checkinstall をインストールする。

# rpm --import RPM-GPG-KEY.dag.txt
# yum --enablerepo=rpmforge install checkinstall

enabled = 0 としているので、--enablerepo=rpmforge のオプションが必要になってい る。

Ruby 本体のインストール

まずは、既にインストール済みとなっている古いパッケージを削除しておく。

# yum remove ruby

Ruby のソースを取得し、コンパイル、checkinstall を使って RPM にする。

$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p230.tar.gz
$ tar xzvf ruby-1.8.6-p230.tar.gz
$ cd ruby-1.8.6-p230
$ ./configure --prefix=/usr
$ make
$ su
Password:
# /usr/sbin/checkinstall --fstrans=no

checkinstall でいろいろと聞かれてくるが、基本的にはデフォルトの解答で問題ない。

Please choose the packaging method you want to use.
Slackware [S], RPM [R] or Debian [D]? R

のところだけ何か選択する必要が出てくるのだが、ここはでは RPM を作成したいので、 R を入力しておく。

うまくいっていれば、最後に以下のメッセージを見ることになる。

**********************************************************************

 Done. The new package has been saved to

 /usr/src/redhat/RPMS/i386/ruby-1.8.6-p230-1.i386.rpm
 You can install it in your system anytime using: 

  rpm -i ruby-1.8.6-p230-1.i386.rpm

**********************************************************************
  • /usr/src/redhat/RPMS/i386/ruby-1.8.6-p230-1.i386.rpm

が作成された RPM ファイルなので、これを rpm コマンドでインストールする。

# rpm -Uvh /usr/src/redhat/RPMS/i386/ruby-1.8.6-p230-1.i386.rpm

確認する。

$ ruby -v
ruby 1.8.6 (2008-06-20 patchlevel 230) [i686-linux]
# yum list *ruby*
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
 * addons: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
Installed Packages
ruby-1.8.6.i386                          p230-1                 installed
Available Packages
eruby.i386                               1.0.5-6.1              base
eruby-devel.i386                         1.0.5-6.1              base
eruby-libs.i386                          1.0.5-6.1              base
ruby.i386                                1.8.5-5.el5_1.1        base
ruby-devel.i386                          1.8.5-5.el5_1.1        base
ruby-docs.i386                           1.8.5-5.el5_1.1        base
ruby-irb.i386                            1.8.5-5.el5_1.1        base
ruby-libs.i386                           1.8.5-5.el5_1.1        base
ruby-mode.i386                           1.8.5-5.el5_1.1        base
ruby-rdoc.i386                           1.8.5-5.el5_1.1        base
ruby-ri.i386                             1.8.5-5.el5_1.1        base
ruby-tcltk.i386                          1.8.5-5.el5_1.1        base
subversion-ruby.i386                     1.4.2-2.el5            base

RubyGems のインストール

先程と同様の手順で、ソースの取得、コンパイル、RPM 化、インストールと進める。

$ wget http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz
$ tar xzvf rubygems-1.2.0.tgz
$ cd rubygems-1.2.0
# /usr/sbin/checkinstall -R "ruby setup.rb"

ここで注意すべきところは以下のところ。

**************************************
**** RPM package creation selected ***
**************************************

This package will be built according to these values: 

1 -  Summary: [ Package created with checkinstall 1.6.0 ]
2 -  Name:    [ rubygems ]
3 -  Version: [ 1.2.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ Applications/System ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ rubygems-1.2.0 ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ rubygems ]

Enter a number to change any of them or press ENTER to continue: 11
Enter the additional requirements: 
>> ruby-1.8.6

This package will be built according to these values: 

1 -  Summary: [ Package created with checkinstall 1.6.0 ]
2 -  Name:    [ rubygems ]
3 -  Version: [ 1.2.0 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ Applications/System ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ rubygems-1.2.0 ]
9 -  Alternate source location: [  ]
10 - Requires: [ ruby-1.8.6 ]
11 - Provides: [ rubygems ]

Enter a number to change any of them or press ENTER to continue: 

Installing with ruby setup.rb...

パッケージの依存に ruby-1.8.6 を指定している。これは先に RPM を作成してインストー ルしたパッケージの名称。 また、10 - Requires を選ぶのに 11 を指定しているが、これは誤りではない。 checkinstall のバグ?なのか1つプラスして番号を指定しないといけない。。

作成された RPM をインストールする。

# rpm -Uvh /usr/src/redhat/RPMS/i386/rubygems-1.2.0-1.i386.rpm
準備中...                ########################################### [100%]
   1:rubygems               ########################################### [100%]

確認する。

# gem -v
1.2.0
# yum list installed rubygems
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
 * base: ftp.iij.ad.jp
 * addons: ftp.iij.ad.jp
Installed Packages
rubygems.i386                            1.2.0-1                installed     

Rails のインストール

RubyGems が入ったので、後は Gem の世界で作業ができる。 バージョンを指定して入れたかったので、-v オプションでバージョンを指定している。 指定しない場合、最新のバージョンがインストールされる。

# gem install rails -v 2.0.2

sqlite 3 のインストール

Cent OS 5.2 の場合、デフォルトで 3.3.6-2 が入っているようだが、devel も入ってい る必要がある。 また、swig も入っていないと後で嵌まる可能性があるのでこれも入っていなければ入れ ておく。

# yum install sqlite-devel swig

sqlite3-ruby のインストール

sqlite3 と Ruby のインターフェイスとなる sqlite3-ruby を入れる。こちらは gem で。

# gem install sqlite3-ruby

確認する。

$ irb --prompt simple
>> require 'rubygems'
=> true
>> require 'sqlite3'
LoadError: no such file to load -- sqlite3/database
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `require'
        from /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2/lib/sqlite3.rb:1
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `gem_original_require'
        from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:32:in `require'
        from (irb):2
        from /usr/lib/ruby/site_ruby/1.8/rubygems/dependency.rb:77

ちゃんとインストールされているはずなのに上記の結果。

# cd /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2/lib/sqlite3
# ll
total 76
-rw-r--r-- 1 root root  1745  Jul 13 02:20 constants.rb
-rw-rw--w- 1 root root 24774  Jul 13 02:20 database.rb
drwxr-xr-x 4 root root  4096  Jul 13 02:20 driver
-rw-r--r-- 1 root root  2307  Jul 13 02:20 errors.rb
-rw-r--r-- 1 root root  7480  Jul 13 02:20 pragmas.rb
-rw-r--r-- 1 root root  4690  Jul 13 02:20 resultset.rb
-rw-r--r-- 1 root root  6843  Jul 13 02:20 statement.rb
-rw-rw--w- 1 root root  3738  Jul 13 02:20 translator.rb
-rw-r--r-- 1 root root  1057  Jul 13 02:20 value.rb
-rw-r--r-- 1 root root   153  Jul 13 02:20 version.rb

other が w のみという、あり得ないパーミッションになっている。。

直しておく。

# chmod 644 database.rb translator.rb 
# ll
total 76
-rw-r--r-- 1 root root  1745  Jul 13 02:20 constants.rb
-rw-r--r-- 1 root root 24774  Jul 13 02:20 database.rb
drwxr-xr-x 4 root root  4096  Jul 13 02:20 driver
-rw-r--r-- 1 root root  2307  Jul 13 02:20 errors.rb
-rw-r--r-- 1 root root  7480  Jul 13 02:20 pragmas.rb
-rw-r--r-- 1 root root  4690  Jul 13 02:20 resultset.rb
-rw-r--r-- 1 root root  6843  Jul 13 02:20 statement.rb
-rw-r--r-- 1 root root  3738  Jul 13 02:20 translator.rb
-rw-r--r-- 1 root root  1057  Jul 13 02:20 value.rb
-rw-r--r-- 1 root root   153  Jul 13 02:20 version.rb

再度確認。

$ irb --prompt simple
>> require 'rubygems'
=> true
>> require 'sqlite3'
=> true

問題無し。

RMagick のインストール

ImageMagck がインストールされていることが前提となる。

# yum list *magick*
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
 * addons: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
Installed Packages
ImageMagick.i386                         6.2.8.0-4.el5_1.1      installed       
Available Packages
ImageMagick-c++.i386                     6.2.8.0-4.el5_1.1      base            
ImageMagick-c++-devel.i386               6.2.8.0-4.el5_1.1      base            
ImageMagick-devel.i386                   6.2.8.0-4.el5_1.1      base            
ImageMagick-perl.i386                    6.2.8.0-4.el5_1.1      base    

dev 系も必要なので関連するものをまとめて入れておく。

# yum install ImageMagick*
# yum list *magick*  
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * base: ftp.jaist.ac.jp
 * updates: ftp.jaist.ac.jp
 * addons: ftp.jaist.ac.jp
 * extras: ftp.jaist.ac.jp
Installed Packages
ImageMagick.i386                         6.2.8.0-4.el5_1.1      installed       
ImageMagick-c++.i386                     6.2.8.0-4.el5_1.1      installed       
ImageMagick-c++-devel.i386               6.2.8.0-4.el5_1.1      installed       
ImageMagick-devel.i386                   6.2.8.0-4.el5_1.1      installed       
ImageMagick-perl.i386                    6.2.8.0-4.el5_1.1      installed      

また、ここで忘れてならないのが windows 系のフォント。入れておかないと、

/usr/lib/ruby/gems/1.8/gems/rmagick-1.15.14/./lib/rvg/misc.rb:321:in `get_type_metrics': unable to read font `/usr/share/fonts/default/TrueType/verdana.ttf' (Magick::ImageMagickError)

なんてエラーをボロボロ見ることになる。

1つ1つ集めるのは大変なのでまとめて置いてあるものをダウンロードしインストールする。

$ wget http://www.zacharywhitley.com/linux/rpms/fedora/core/6/i386/msttcorefonts-2.0-1.noarch.rpm
$ su
# rpm -ivh msttcorefonts-2.0-1.noarch.rpm 

ここでインストールした時のパスが、rmagick の要求するパスと異なっているので、シンボ リックリンクを貼っておく。

# ln -s /usr/share/fonts/msttcorefonts /usr/share/fonts/default/TrueType

RMagick のインストール。

# gem install rmagick -v 1.15.14

確認する。

$ irb --prompt simple
>> require 'rubygems'
=> true
>> require 'RMagick'
=> true

以上で完了!!

後記

Ruby の 1.8.6 p230 には、それ自体に問題があった。 ここに記載している手順としては問題無く、同じ手順で 1.8.7 も試してみたが、問題無し。

blog comments powered by Disqus