Cent OS 5.2 への Ruby On Rails 環境のインストール
この作業記録は 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 = 1 を enabled = 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 も試してみたが、問題無し。