RedmineをUbuntu 12.04 LTSにrvmを使ってインストールする

一応、redmineのインストールドキュメントは、英語なら、

Installing Redmine
Upgrading an existing installation

とかあるんだけど、ここで述べているのは、ほとんど、rvm 関連の四苦八苦です。

rvmをインストールするべ。

$ sudo apt-get install rvm-ruby

rvmを動かすためには何らかのrubyが必要らしいので、とりあえず、システムの奴をインストールしておく

$ sudo apt-get install ruby

初期状態だと、新しいrubyが出てこないことがあるので、先にデータベースを更新しておく。

$ sudo rvm get head
$ sudo rvm reload

インストールできる候補のrubyを確認する

$ sudo rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-p370]
[ruby-]1.9.1[-p431]
[ruby-]1.9.2-p180
[ruby-]1.9.2-p290
[ruby-]1.9.2-p318
[ruby-]1.9.2[-p320]
[ruby-]1.9.2-head
[ruby-]1.9.3-preview1
[ruby-]1.9.3-rc1
[ruby-]1.9.3-p0
[ruby-]1.9.3-p125
[ruby-]1.9.3[-p194]
[ruby-]1.9.3-head
ruby-head

...


最新っぽい1.9.3をインストールする

$ sudo rvm install 1.9.3

インストールされたrubyを確認する

$ sudo rvm list

rvm rubies

   ruby-1.9.3 [ x86_64 ]
   ruby-1.9.3-p194 [ x86_64 ]

# Default ruby not set. Try 'rvm alias create default <ruby>'.

# => - current
# =* - current && default
#  * - default

1.9.3-p194をデフォルトのrubyにする

$ sudo rvm 1.9.3-p194 --default

もう一度確認してみる(1.9.3-p194がデフォルトになっている)

$ sudo rvm list

rvm rubies

   ruby-1.9.3 [ x86_64 ]
=* ruby-1.9.3-p194 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

直接rubyのバージョンを確認

$ ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]

何で良く分からないので、whichしてみると、

$ which ruby
/usr/bin/ruby

どうやら、システムのrubyの方がパスが先みたいだ。面倒なので、要らないシステム側のrubyを消しておこう・・・。

$ sudo apt-get remove ruby

そして、

$ ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]

???
よくわからんので、一度、ログインし直してから、もう一度、やってみる。

$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

うまくいってた。さて、redmineをインストールするには、bundlerが必要なので、gemでとりあえず、bundlerをインストール

$ sudo gem install bundler
sudo: gem: command not found

なんでやねんなーーー!

$ which gem
/usr/share/ruby-rvm/rubies/ruby-1.9.3-p194/bin/gem

パス通ってるのに、sudoだと行かない・・・???
で、いろいろと調べると、sudoは、セキュリティ強化のために、一部の環境変数と一部のパス以外はユーザーの環境を引き継がなくなってしまったんだそうな・・・。
で、sudoers (visudoで編集すべし)にsecure_pathっていうのがあって、そこにパスが通っているコマンドは実行できるけど、それ以外はダメっていうことになっている。ところが、rvmは、システム内でrubyのディレクトリを簡単に切り替えることが出来るのがメリットなので、ここにrvmでインストールされたコマンド群のパスを書くのは凄くダサイ。

secure_path=....:/usr/share/ruby-rvm/rubies/ruby-*/bin

なんてことはできない。じゃあどうすんだろう??ってなるんだけど、実はそのために、rvmsudoというコマンドが用意されていた。

・・・ということで、

$ rvmsudo gem install bundler

....

あとは、bundlerまかせ。redmineのアーカイブを展開したディレクトリ内で、bundlerを実行する。

$ rvmsudo bundle install --without development test

あとは煮るなり焼くなり・・・。