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

tsujimotterのノートブック

日曜数学者 tsujimotter の「趣味で数学」実践ノート

RVM 経由で Ruby を入れるときにハマったこと

技術系 ruby

タイトルのとおりです。

環境は前回に引き続き、CentOS 6.5 です。

Ruby ですが、CentOSyum でインストールしてもいいのですが、バージョンが古いんですよね。

しかも、一度インストールしてしまうとバージョンの変更が面倒ですよね。

特に Ruby はバージョンごとに挙動が大きく異なっていたりして、いろいろと面倒です。


そこで、Ruby をそのまま入れるのではなく RVM という Ruby のバージョン管理ソフトを使って Ruby の異なるバージョン共存させ、コマンド一つで自在に変更できるようにしてみましょう。


RVMの公式サイト:
https://rvm.io/

基本的には、上のサイトを見ればわかるのですが、いろいろハマった点がありましたので、インストール手順を紹介しながら解決策を紹介したいと思います。




RVMをインストールする
(--ruby オプションにより、Ruby 最新版も同時にインストールされる。)

$ \curl -sSL https://get.rvm.io | bash -s stable --ruby

途中ログインユーザーのパスワードを求められますが、そのままパスワードを入力してエンターを押して進んであげてください。
足りない依存ファイルをRPMインストールするために必要なものです。


Ruby 1.9.3 をインストールし、デフォルトで使用

$ rvm install ruby-1.9.3
$ rvm use ruby-1.9.3 --default


Ruby がちゃんと使えることを確認しましょう。

$ ruby -v
ruby 1.9.3p547 (2014-05-14 revision 45962) [x86_64-linux]

やったね。




ここで注意点。

一旦ターミナルをおとして、再起動してから Ruby を起動すると、そんなコマンドはないと言われてしまいます。

$ ruby -v
bash: ruby: コマンドが見つかりません

ああ、ターミナルをおとすと、また rvm use しないといけないのだなぁ・・・と思って次のコマンドを打ってみると、予想外の動きをします。

$ rvm use ruby-1.9.3
RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for a example.

あら不思議!インストール時にはなかったはずのエラーが現れました。


実はインストールのときに「さりげなく」書いてあったのですが、ターミナル起動時に毎回

$ source ~/.rvm/scripts/rvm 

というコマンドを打つ必要があったのです。


毎回打っていると面倒ですし、CGIを使う際に、これではまずいので、.bashrc に追加しておきましょう。

~/.bashrc に以下を追加

source ~/.rvm/scripts/rvm

反映させます。

$ source ~/.bashrc
$ ruby -v
ruby 1.9.3p547 (2014-05-14 revision 45962) [x86_64-linux]

これで大丈夫。

ターミナル一旦閉じて、また開くと自動で Ruby 1.9.3 が使えます。

$ ruby -v
ruby 1.9.3p547 (2014-05-14 revision 45962) [x86_64-linux]

ほらね。


また、この状態では

$ /usr/bin/env ruby -v
ruby 1.9.3p547 (2014-05-14 revision 45962) [x86_64-linux]

となり、上記のコマンドでも Ruby が起動できます。
(このコマンドは、CGIのときに使いますね。)

参考:
zshでRVMを使うと「RVM is not a function,...」 - Hack Your Design!


ついでなんで、ホームディレクトリに適当なスクリプトファイルを作って実行してみましょう。

$ cd ~
$ vim test.rb
#!/usr/bin/env ruby
# coding: utf-8 

puts "今日もお疲れさまです。"


そのまま

$ ruby test.rb

としてもいいですが、せっかく最初の行に Ruby の実行パスを書いたわけですから、
次のように実行権限をつけて実行してみましょう。

$ chmod 700 test.rb
$ ls -la
-rwx------.  1 hoge hoge       80  620 19:28 2014 test.rb


さぁ、実行です。

$ ./test.rb
今日もお疲れさまです。


それでは、お疲れさまでした~。

追記:RVM のよく使うコマンド集

Ruby の異なるバージョンのインストール

$ rvm install ruby-x.x.x

異なるバージョンの Ruby へスイッチ

$ rvm use ruby-x.x.x

デフォルト設定した Ruby へとスイッチ

$ rvm default

現在のデフォルトの確認

$ rvm list default

Default Ruby (for new shells)

  ruby-1.9.3-p547 [ x86_64 ]