Cent OS 5.2 への Ruby On Rails 環境のインストール
この作業記録は 2008/07/13 に行ったものであり、現在の状況と若干異っている可能性もある。ただ、最近参照されているサイトの内容を見ていても、手順的には問題無いようなのでそのままの記載を残すことにする。(2009/04/21)
もし、最近のバージョンで試してみて問題のある記述があった場合には、コメント頂けるとありがたい。
環境と実施しようとしていること
Cent OS のバージョン。
1 2 |
$ 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 のリポジトリには含まれていないので、リポジトリを 追加しておく。まずは適当なディレクトリで必要なファイルをダウンロードしておく。
1 2 |
$ 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 をインストールする。
1 2 |
# rpm --import RPM-GPG-KEY.dag.txt # yum --enablerepo=rpmforge install checkinstall |
enabled = 0 としているので、--enablerepo=rpmforge のオプションが必要になってい
る。
Ruby 本体のインストール
まずは、既にインストール済みとなっている古いパッケージを削除しておく。
# yum remove ruby |
Ruby のソースを取得し、コンパイル、checkinstall を使って RPM にする。
1 2 3 4 5 6 7 8 |
$ 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 でいろいろと聞かれてくるが、基本的にはデフォルトの解答で問題ない。
1 2 |
Please choose the packaging method you want to use. Slackware [S], RPM [R] or Debian [D]? R |
のところだけ何か選択する必要が出てくるのだが、ここはでは RPM を作成したいので、
R を入力しておく。
うまくいっていれば、最後に以下のメッセージを見ることになる。
1 2 3 4 5 6 7 8 9 10 |
********************************************************************** 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 |
確認する。
1 2 |
$ ruby -v ruby 1.8.6 (2008-06-20 patchlevel 230) [i686-linux] |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# 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 化、インストールと進める。
1 2 3 4 |
$ 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" |
ここで注意すべきところは以下のところ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
************************************** **** 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 をインストールする。
1 2 3 |
# rpm -Uvh /usr/src/redhat/RPMS/i386/rubygems-1.2.0-1.i386.rpm 準備中... ########################################### [100%] 1:rubygems ########################################### [100%] |
確認する。
1 2 3 4 5 6 7 8 9 10 11 |
# 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 |
確認する。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ 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 |
ちゃんとインストールされているはずなのに上記の結果。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# cd /usr/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2/lib/sqlite3 # ll 合計 76 -rw-r--r-- 1 root root 1745 7月 13 02:20 constants.rb -rw-rw--w- 1 root root 24774 7月 13 02:20 database.rb drwxr-xr-x 4 root root 4096 7月 13 02:20 driver -rw-r--r-- 1 root root 2307 7月 13 02:20 errors.rb -rw-r--r-- 1 root root 7480 7月 13 02:20 pragmas.rb -rw-r--r-- 1 root root 4690 7月 13 02:20 resultset.rb -rw-r--r-- 1 root root 6843 7月 13 02:20 statement.rb -rw-rw--w- 1 root root 3738 7月 13 02:20 translator.rb -rw-r--r-- 1 root root 1057 7月 13 02:20 value.rb -rw-r--r-- 1 root root 153 7月 13 02:20 version.rb |
other が w のみという、あり得ないパーミッションになっている。。
直しておく。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# chmod 644 database.rb translator.rb # ll 合計 76 -rw-r--r-- 1 root root 1745 7月 13 02:20 constants.rb -rw-r--r-- 1 root root 24774 7月 13 02:20 database.rb drwxr-xr-x 4 root root 4096 7月 13 02:20 driver -rw-r--r-- 1 root root 2307 7月 13 02:20 errors.rb -rw-r--r-- 1 root root 7480 7月 13 02:20 pragmas.rb -rw-r--r-- 1 root root 4690 7月 13 02:20 resultset.rb -rw-r--r-- 1 root root 6843 7月 13 02:20 statement.rb -rw-r--r-- 1 root root 3738 7月 13 02:20 translator.rb -rw-r--r-- 1 root root 1057 7月 13 02:20 value.rb -rw-r--r-- 1 root root 153 7月 13 02:20 version.rb |
再度確認。
1 2 3 4 5 |
$ irb --prompt simple >> require 'rubygems' => true >> require 'sqlite3' => true |
問題無し。
RMagick のインストール
ImageMagck がインストールされていることが前提となる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 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* |
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 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つ集めるのは大変なのでまとめて置いてあるものをダウンロードしインストールする。
1 2 3 |
$ 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 |
確認する。
1 2 3 4 5 |
$ irb --prompt simple >> require 'rubygems' => true >> require 'RMagick' => true |
以上で完了!!
後記
Ruby の 1.8.6 p230 には、それ自体に問題があった。 ここに記載している手順としては問題無く、同じ手順で 1.8.7 も試してみたが、問題無し。