2015年2月20日金曜日

CentOSにRVMをインストール

概要

RVM(Ruby Version Manager) を今更ながらCentOSに入れて試してみました
すごい昔はyumでインストールしたりRubyの公式サイトから.tar.gzをダウンロードしてソースコンパイルしてインストールしていましたが、さすがに卒業しようかと思います

環境

  • CentOS 6.6 64bit (Final)
  • RVM 1.26.10
  • AutoConf 2.69

各種インストール作業

RVMインストール

rootで実施しました
ユーザは適当に変更してください

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
\curl -sSL https://get.rvm.io | bash -s stable
echo 'export PATH=$PATH:/usr/local/rvm/bin' >> /root/.bashrc
source /root/.bashrc
  • P.S 2015/04/06
    curl先のURLが変更されていたのでインストールコマンドを修正しました

curlの前の円マークは必要です
コマンドの前に円マークを付けることでaliasの設定を一時的に無視することができます

rvm -v
rvm 1.26.10 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

ひとまずバージョンが表示されればOKです

autoconf2.69のインストール

rubyをインストールするのにautoconfのバージョン2.67以上が必要になります
2.67以上をインストールしないと

configure.in:6: error: Autoconf version 2.67 or higher is required

というエラーとなりrubyをインストールする際にmakeでエラーとなります
CentOS 6.6にデフォルトでインストールされているautoconfが2.63だったのでバージョンアップします

autoconf自体の最新バージョンは2.69のようです
せっかくなので最新版をインストールたいと思います

cd /var/tmp/
wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar zvxf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure
make
make install

これでインストールできました
/usr/local/bin/autoconfにインストールされました
前のautoconfのPATHが効いている場合は再ログインすると新しいバージョンのautoconfを見るようになります

Rubyのインストール

まずインストール可能なRubyのバージョンを調べます

rvm list known

インストール可能なパッケージの一覧が表示されます
Ruby以外でのパッケージのバージョン一覧も表示されるので、ここからRubyの最新版を選択してインストールします

rvm install 2.2-head

Rubyの動作に必要なほかのパッケージの依存関係を解決してインストールしてくれます

インストールが完了すればrubyを使えるようになります
インストールされているディレクトリは以下のようです
/usr/local/rvm/rubies/ruby-2.2-head/bin/ruby

rvmを使ってみる

違うバージョンのRubyをインストールして切り替えてみる

次に違うバージョンのRubyをインストールしてみます
先ほどと同じようにrvm list knownでバージョンを確認して好きなバージョンをインストールしましょう
自分は1.9系をインストールしました

rvm install 1.9.3

インストールが完了するとすでに1.9.3にバージョンが切り替わっていました
パスは以下にインストールされています

/usr/local/rvm/rubies/ruby-1.9.3-p551/bin/ruby

ではここからまた2.2.0に切り替えてみましょう
すでにインストールされているRubyのバージョンを確認するにはrvm listを使います

rvm list

rvm rubies

=> ruby-1.9.3-p551 [ x86_64 ]
 * ruby-2.2-head [ x86_64 ]
   ruby-2.2.0 [ x86_64 ]

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

1.9.3と2.2.0がインストールされていることがわかると思います
現在のバージョンが1.9.3になっていることもわかると思います

ここから2.2.0に切り替えるにはrvm useを使います

rvm use 2.2-head

これで2.2.0が使われるようになります
うまくrvm useが出来ない場合は一旦ログアウトしてから再度試してみてください

Gemの挙動を確認する

Rubyのバージョンを切り替えた場合のgemコマンドの挙動も確認しておきます
まずそれぞれのRubyのバージョンで使われるGemのバージョンを確認します

[root@localhost tmp]$ rvm use 2.2-head
Using /usr/local/rvm/gems/ruby-2.2-head
[root@localhost tmp]$ gem -v
2.4.6
[root@localhost tmp]$ which gem
/usr/local/rvm/rubies/ruby-1.9.3-p551/bin/gem
[root@localhost tmp]$ rvm use 1.9.3
Using /usr/local/rvm/gems/ruby-1.9.3-p551
[root@localhost tmp]$ gem -v
2.4.3
[root@localhost tmp]$ which gem
/usr/local/rvm/rubies/ruby-1.9.3-p551/bin/gem

それぞれの別のgemが使われているようです

ではこの状況でgem installを実行してみます
インストールするgemは何でもOKです
ruby 2.2.0の方でcapistranoをインストールしてみます

gem install capistrano

インストールの状況を確認すると

[root@localhost tmp]$ rvm use 2.2-head
Using /usr/local/rvm/gems/ruby-2.2-head
[root@localhost tmp]$ cap install
mkdir -p config/deploy
[skip] config/deploy.rb already exists
[skip] config/deploy/staging.rb already exists
[skip] config/deploy/production.rb already exists
mkdir -p lib/capistrano/tasks
[skip] Capfile already exists
Capified
[root@localhost tmp]$ rvm use 1.9.3
Using /usr/local/rvm/gems/ruby-1.9.3-p551
[root@localhost tmp]$ cap install
-bash: cap: コマンドが見つかりません

当たり前かもしれませんが1.9.3ではcapコマンドが使えませんでした
つまりgemも各バージョンごとで閉じていることになります

最後に

いまさらですがRVMを試してみました
これからはクリーンな環境にRubyをインストールするときはRVMを使いたいと思います
自分は特にRubyの各種バージョンを使い分けてテストしたり動作確認したりする必要のない人間だと思うのですが、検証とかにも便利そうなのとRuby自体のインストールも簡単にできるので使い続けてみたいと思います

参考サイト

Tips

  • ログインするとPATHが設定されていない
    rubyやgemコマンドへのパスはデフォルトでは通っていません
    どうやらrvm useで使用するrubyを指定するとPATHに通るようでコマンドを実行できるようになります
    なのでログイン時にデフォルトで使用するrubyを使うように.bashrcあたりに記載しておくといいと思います
echo 'rvm use ruby-2.2.1' >> /root/.bashrc

P.S 20150416
すでにrubyコマンドがPATHにある場合はuseしているのでその場合はuseしないほうがいいっぽいのでそこを制御した版は以下の通り
こっちのほうがCapistranoとかと絡んだ時に相性が良さそう

(! which ruby > /dev/null 2>&1) && rvm use ruby-2.2.1 > /dev/null 2>&1

0 件のコメント:

コメントを投稿