hachiNote

勉強したことをメモします。

Rails 3 をインストールする

目的

Rubyをインストールしてみたものの、Rubyの本が今手元に何もないので、Rubyの学習がやりにくい。なので、とりあえずRuby on Railsいれちゃえ、ってことで早速作業。

Rails 2にするかRails 3にするかで少し悩みましたが、個人で単に勉強したいだけだから、どうせやるなら最新のものを触ろう、ってことでRails 3を入れることを目指します。

なお、ここでの作業環境は、CentOS 5.3です。

インストール済みのRubyをいったん削除する

Railsのサイトをのぞいてみる。
Ruby on Rails | A web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern.

Railsを入れるためには、Rubyは 1.8.7以上でないとだめらしい。

でも先ほどCentOS 5.3 上で yum で入れたRubyのバージョンは 1.8.5 でしたね。yum updateしてもこのバージョンだから、別の方法で手に入れないとだめってことか。

ひとまず入れてたものは消してしまいます。

# yum remove ruby*

さっくり消えました。yumってすごい。

checkinstallをインストールする

tarでソース持ってきて make install ってやるのが実はあまり好きではなくて、できればRPMにしたい派です。RPMならいつでもアンインストールできるし。

いろいろ検索してみると、checkinstallというツールを使うと、tarで持ってきたものをRPMにすることができるらしいです。すごいっす。

blog: ゼロから構築するrails環境←こことても参考になりました。ありがとうございます。
@IT:ソースファイルからRPMファイルを作成するには

早速やってみましょう。checkinstallのtarを取ってきてmake installしたら、checkinstall自体もRPMにして入れるみたいですね。

# cd /usr/local/src/
# wget http://asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz
# tar zxvf checkinstall-1.6.2.tar.gz
# cd checkinstall-1.6.2.tar.gz
# make install
# /usr/local/sbin/checkinstall

checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
           このソフトウェアはGNU GPLの下でリリースしています。

The checkinstallrc file was not found at:
/usr/local/sbin/../checkinstallrc

デフォルトの内容を使うものとします

The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs?  [y]: y

パッケージのドキュメンテーションを準備..OK

使用するパッケージ方式を選んでください。
Slackwareなら[S], RPMなら[R], Debianなら[D]を入力R


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

このパッケージは以下の内容で構成されます:

1 -  Summary: [ CheckInstall installations tracker, version 1.6.2 ]
2 -  Name:    [ checkinstall ]
3 -  Version: [ 1.6.2 ]
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ Applications/System ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ checkinstall-1.6.2 ]
9 -  Alternate source location: [  ]
10 - Requires: [  ]
11 - Provides: [ checkinstall ]

変更するものの番号を入力してください。Enterで続行します:

Installing with make install...


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

 Done. The new package has been saved to

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

      rpm -i checkinstall-1.6.2-1.i386.rpm

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

# cd /usr/src/redhat/RPMS/i386/
# rpm -i checkinstall-1.6.2-1.i386.rpm

Rubyのtarを持ってきてインストールする

ではRubyをインストールしましょう。
http://www.ruby-lang.org/ja/

私が見たときは、1.8.7と1.9.2が最新でした。いろいろサイトを見ていると、1.8.7を入れている例が多かったのですが……。新しかったらなおいいんじゃない? というとても適当な判断で1.9.2の一番新しいバージョンを取ってきて入れました。

# wget http://core.ring.gr.jp/archives/lang/ruby/ruby-1.9.2-p136.tar.gz
# tar xzvf ruby-1.9.2-p136.tar.gz
# cd ruby-1.9.2-p136
# ./configure
# /usr/local/sbin/checkinstall

 (中略)

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

 Done. The new package has been saved to

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

      rpm -i ruby-1.9.2-p136-1.i386.rpm

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

途中、"tempディレクトリにファイルをコピー"という表示でびっくりするぐらい時間がかかります。そうでなくても十数年前の激弱PCで作業してたので、checkinstallが終わるのが8時間くらいかかりました……orz。

翌朝、checkinstallが終わっているのを確認して、インストールしてみました。

# rpm -Uvh /usr/src/redhat/RPMS/i386/ruby-1.9.2-p136-1.i386.rpm
$ ruby -v
ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]

よっしゃ! やっと入った。

RubyGemsをインストールする……?

さて次はRubyGemsというのを入れるらしいです。
Ruby on Rails | A web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern.

さっそく取ってきて入れてみます。今度はcheckinstallの引数が違いますね。

# wget http://rubyforge.org/frs/download.php/73779/rubygems-1.4.1.tgz
# tar xzvf rubygems-1.4.1.tgz
# cd rubygems-1.4.1
# /usr/local/sbin/checkinstall -R ruby ./setup.rb

 (中略)

Installing with ruby ./setup.rb...

========================= インストールの結果 ===========================
/usr/local/src/rubygems-1.4.1/lib/rubygems/source_index.rb:62:in `installed_spec_directories': undefined method `path' for Gem:Module (NoMethodError)
        from /usr/local/src/rubygems-1.4.1/lib/rubygems/source_index.rb:52:in `from_installed_gems'
        from /usr/local/src/rubygems-1.4.1/lib/rubygems.rb:914:in `source_index'
        from /usr/local/src/rubygems-1.4.1/lib/rubygems/gem_path_searcher.rb:98:in `init_gemspecs'
        from /usr/local/src/rubygems-1.4.1/lib/rubygems/gem_path_searcher.rb:13:in `initialize'
        from /usr/local/src/rubygems-1.4.1/lib/rubygems.rb:873:in `new'
        from /usr/local/src/rubygems-1.4.1/lib/rubygems.rb:873:in `searcher'
        from /usr/local/src/rubygems-1.4.1/lib/rubygems.rb:495:in `find_files'
        from /usr/local/src/rubygems-1.4.1/lib/rubygems.rb:1034:in `load_plugins'
        from /usr/local/src/rubygems-1.4.1/lib/rubygems/gem_runner.rb:84:in `<top (required)>'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from <internal:lib/rubygems/custom_require>:29:in `require'
        from ./setup.rb:25:in `<main>'

****  インストールは失敗しました。パッケージの作成を中断します

おや? エラーが出てますね。

手順が何か足りないのかと思って、エラーが出ているソースを見てみましたが、Gemクラスはrubygems-1.4.1ディレクトリの中にちゃんとあるっぽいし、なにか問題があるように見えない。

わからないので、ググって調べました。すると情報ありました。
http://arika.org/diary/2010/08/30/ruby-1-9-2-and-rubygems-1-3-7-and-gem-path
http://railsforum.com/viewtopic.php?id=40680

どうもruby-1.9.2の組み合わせで起こるようですね。英語のサイトのほうをよく見ると、「ruby-1.9.2ならRubyGemsをインストールする必要ないよ…」てなことを言ってるようです。

もしかして1.9.2はもうRubyGems入っているのかな?

# gem -v
1.3.7

なんと! 1.3.7ってことはRails 3に対応しているバージョンですね。なんだ、追加で入れる必要なかったのか。ということで、RubyGemsを後から入れる作業はここで中止。

いよいよRails 3をインストールする

ここまで来たら、あとはコマンド一行打ち込むだけっぽい。

# gem install rails

……お、き、キター!

早速何かRailsアプリケーションを作成してみよう。

$ rails new blog_app

おぉ、よくわからないけど、何かいっぱいcreateしている! できたっぽいよ。

なにかほかにもDB関連の作業とかしなくちゃいけないっぽいけど、それは後でやろう。