読者です 読者をやめる 読者になる 読者になる

Rails3をUbuntu11.04で動かそうとしたらgemsで色々ハマった巻

結論

rubygemsをテキトーにインストールすると、gem*1 と gem1.8 が別々に出来上がることがある。

顛末

インストール直後のUbuntu 11.04 serverにRuby on Rails3をインストールして動かそうとした。

あまり本題に関わってなさそうな操作
$ sudo apt-get upgrade
$ sudo apt-get install ruby-full
$ sudo apt-get install rubygems
$ sudo apt-get install build-essential    # 不要だった
$ sudo apt-get install autoconf
$ sudo apt-get install bison
$ sudo apt-get install git
$ sudo apt-get install curl

// rvmのインストール
$ bash < <(curl -s -B https://rvm.beginrescueend.com/install/rvm )
$ source $HOME/.rvm/scripts/rvm
$ rvm get head
takuma@takuma-ubuntu:~$ rvm reload                                                                                 
takuma@takuma-ubuntu:~$ rvm list known
(略)
[ruby-]1.8.7[-p334]
[ruby-]1.8.7-head
(略)
[ruby-]1.9.2[-p180]
[ruby-]1.9.2-head
ruby-head
(略)

$ rvm install ruby-1.9.2-head
$ rvm install ruby-1.8.7-head


$ rvm use ruby-1.9.2-head                                                                    
Using /home/takuma/.rvm/gems/ruby-1.9.2-head

rvmのインストールまではつつがなく進行。

ここから本題のgemsインストール
$ sudo gem update    # nothing to update
$ sudo gem install pkg-config
$ sudo gem install rails
インストーラが走ってるぽいメッセージが出る

$ gem list
何も出ない

$ sudo gem list
いろいろ、railsも入ってる

$ sudo rails
$ rails
いずれもcommand not found

ここではて?と首をかしげる。なんでsudoした時だけgem listが表示されるのか、そもそもrailsコマンドインストール出来てないじゃないとか。おかしいな、ということで

$ rvm update
$ gem install rails

などと打ってみると、「zlibが足りません」的エラーをもらう。じゃあzlib入れてやるかということで

$ sudo apt-get install build-essential bison openssl libreadline5 libreadline-dev curl git zlib1g zlib1g-dev libssl-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev
// ついでに足りなかったら困りそうなのもまとめて突っ込む
$ rvm remove 1.9.2
$ rvm install 1.9.2 --with-zlib

ここまでやって、

$ sudo gem install rubygems-update
$ sudo update_rubygems

gemsのアップデートを試してみる。しかし

$ gem install rails

ではまたも「zlibが足りません」系エラー。zlib入れてアップデートしたはずなのに、どうなってるんだろうと思って色々調べると、gemとは別にgem1.8なるコマンドが入ることがあるとのこと。

$ gem1.8 install rails  # 成功
$ rails new railstest
$ cd railstest
$ bundle install
$ rails server

これで母艦ブラウザから http://(LinuxマシンIPアドレス):3000/ を入力すると、Railsおなじみのスタートページが表示された。

考察

  • 初期状態ではzlibが入っておらず、rubyやgemsをインストールした時には一緒にコンパイルされなかった?
  • gem と gem1.8 が別々に出来たのは、gemのupdate機能利用時の親切仕様なのかもしれない。なにせgemsのバージョン関連はトラブルの宝庫ですからね。

*1:バージョン確認すると1.6だった