ちょっとしたWebアプリを作るとき、いままでPerlとPostgreSQLでしこしこ作りこんでいたが、さすがに面倒になってきた。私はプログラムの専門家ではないので、最小限の時間と勉強でそこそこ動くものが出来る手段が嬉しい。というわけで過去にちょっとだけ触ったことのあるRuby on Railsに再入門することにした。プラットフォームはCentOS5.2 on Xen。環境を整えるだけならコマンド数個打つだけでできるだろうとタカをくくっていたのだが、意外や意外、インストールに妙に手間取ってしまった。
最初にdlutterというレポジトリを頼ってみたのだが、現在はRailsのrpmは載っていない。次にgemでインストール(gem install rails)しようとしたら、おそらくCeotOSのgemのバージョンが古くて失敗する。rubyforge.orgからgemsのソースを落してきて、checkinstallでtgzからrpmを作ったらうまくいった。CentOS5のRubyのバージョン(1.8.5-5)ではrake db:migrateが出来ないので1.8.6にしなければいけない。こちらもソースを落してきてcheckinstallを使おうとしたらうまく行かない、云々。あまりに作業が発散してしまったのでログもろくに残っていない。ここまででほぼ一日かかってしまった。
以下に示すのは最終的にうまくいった手順。
Fedora9のupdatesレポジトリからソースを拾ってきて、ビルドする。既にrubyが入っていたらyum erase rubyで削除しておいた方が安全。rpmbuildが入っていない場合は。yum install rpm-buildでインストールする。
[root@dev1 ~]# wget http://ftp.kddilabs.jp/Linux/packages/fedora/updates/9/SRPMS/ruby-1.8.6.230-4.fc9.src.rpm [root@dev1 ~]# rpmbuild --rebuild ruby-1.8.6.230-4.fc9.src.rpm
この段階で、いくつもの依存パッケージを要求され、終了してしまう。これはそのままyumで入れたらOKだった。
[root@dev1 ~]# yum install -y readline-devel [root@dev1 ~]# yum install -y ncurses-devel [root@dev1 ~]# yum install -y gdbm-devel [root@dev1 ~]# yum install -y tcl-devel [root@dev1 ~]# yum install -y tk-devel [root@dev1 ~]# yum install -y libX11-devel [root@dev1 ~]# yum install -y autoconf [root@dev1 ~]# yum install -y openssl-devel [root@dev1 ~]# yum install -y db4-devel [root@dev1 ~]# yum install -y emacs [root@dev1 ~]# yum install -y byacc
もう一度気を取り直してビルドする。
[root@dev1 ~]# rpmbuild --rebuild ruby-1.8.6.230-4.fc9.src.rpm
この作業は結構メモリ喰いで、当初仮想サーバに割り当てていた256MBでは一晩放置していても終わらなかった。768MBに増やして再度挑戦したら放置している間に終わっていた。成功すると以下のようなパッケージが出来ている。
[root@dev1 ~]# cd /usr/src/redhat/RPMS/x86_64/ [root@dev1 x86_64]# ls ruby-1.8.6.230-4.x86_64.rpm ruby-libs-1.8.6.230-4.x86_64.rpm ruby-tcltk-1.8.6.230-4.x86_64.rpm ruby-devel-1.8.6.230-4.x86_64.rpm ruby-mode-1.8.6.230-4.x86_64.rpm ruby-docs-1.8.6.230-4.x86_64.rpm ruby-rdoc-1.8.6.230-4.x86_64.rpm ruby-irb-1.8.6.230-4.x86_64.rpm ruby-ri-1.8.6.230-4.x86_64.rpm
そしておもむろにインストールする。もしruby-libsがコンフリクトしていたら、古いバージョンはyum erase ruby-libsで消す。
[root@dev1 x86_64]# rpm -Uvh ruby*
ここまではまだ道半ば。次にrubygemsをインストールする。ネット上の情報ではcheckinstallでrpmを作成する手順が多いが、checkinstallのインストールも面倒なのでソースからそのままいれてしまう。
まずrubygemsのソースをダウンロードして展開する。
[root@dev1 ~]# http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz [root@dev1 ~]# tar zxvf rubygems-1.2.0.tgz
そして展開したソースディレクトリに入り、setup.rbスクリプトでインストールする。
[root@dev1 ~]# cd rubygems-1.2.0 [root@dev1 rubygems-1.2.0]# ruby setup.rb
そして(ようやく!!)gemsでrailsをインストールする。Rails2からはSQLiteがデフォルトのデータベースに設定されているとのことなので、そちらも入れる。あらかじめyumでsqliteとsqlite-develをインストールしておく。
[root@dev1 ~]# gem install rails [root@dev1 ~]# gem install sqlite3-ruby
それから、SQLiteのライブラリにパーミッションの設定ミスがある(読み込めない!!)ので、chmodする。
[root@dev1 ~]# cd /usr/lib64/ruby/gems/1.8/gems/sqlite3-ruby-1.2.2/lib/sqlite3/
[root@dev1 sqlite3]#find . -perm 0662 -exec chmod 664 {} \;