Ubuntuに rbenv と ruby-build を再インストール。パッケージでバージョン変更できなくなったので・・。

Ubuntu で rbenv をつかって Ruby のバージョン管理をしています。rbenv でバージョンを切り替えることが出来なくてかなりイラッとしたのでメモ。

もともとRuby 1.9.3-p286 を使用していたのですが。

ruby 1.9 におけるハッシュ飽和攻撃による DoS 脆弱性 (CVE-2012-5371) ruby 1.9 におけるハッシュ飽和攻撃による DoS 脆弱性 (CVE-2012-5371)

この記事を見て、1.9.3-P327 をインストールすることにしました。でとりあえずは ruby-build をアップデート。

#ruby-build アップデート
$ cd ~/ruby-build
$ git pull
$ sudo ./install.sh

#インストールできるリスト表示
$ rbenv insall -l
(中略)
  1.9.3-p194
  1.9.3-p286
  1.9.3-p327
  1.9.3-preview1
  1.9.3-rc1
  2.0.0-dev
  2.0.0-preview1
(中略)

#1.9.3-p327があったのでインストール
$ rbenv install 1.9.3-p327
(インストール完了)
#Rubyのバージョンを変更する
$ rbenv global 1.9.3-p327
$ rbenv rehash

$ ruby -v
$ ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]

$ ruby -v
$ ruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux]

ビックリしました。変わらないんです。rbenv globalで変更できません。意味が分からん。

でしばらく色々やってみたんですが、何ともならんし意味分からんので一念発起。 rbenv を入れ直すことに。

実は以前にインストールの手順を書きましたが、Ubuntu のパッケージで rbenv をインストールしていたので、それを git から入れなおしたいとは思っていたんです。でも gem とか云々面倒だkらな・・・。ということでスルーしておりましたが。やり直してみます。その過程で問題点も浮き彫りになるだろうと。

まずはパッケージのアンインストール

$ sudo apt-get autoremove rbenv
$ rm -rf ~/.rbenv
$ rm -rf ~/ruby-build

あとは/usr/local/binとか覗いて適当にruby-build と rbenv 関係を削除した。

一応、 rbenv が何かしら残っていないなか確認。

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

システムの Ruby になっているのでとりあえず問題ないだろうと。

rbenv インストール

基本的にsstephenson/rbenv · GitHubのまんま作業するだけ。変えているのはbash_profilebashrcにしているだけ。

$ cd
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ exec $SHELL

インストールが楽になる ruby-build もインストール。

git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

これでインストール完了。

それからrbenv install 1.9.2-p320rbenv install 1.9.3-p327をインストール。rbenv global 1.9.3-p327すると今度は別のエラーがでる。

rbenv: version `1.9.3-p286' is not installed

そりゃそうだろう。なにせ俺は1.9.3-p286なんてインストールしてないからな!!とかなんとかブツブツいいながら。とりあえず ~/.rbenv/versionを開いてみる。

1.9.3-p327

この1行しか記載されていない。オカシイぞ。いまのエラーはどう考えても「兄貴のrubyはversion 1.9.3-p286になってますけど、インストールしてませんぜ!!」って意味だろう。解せぬ。ということで一応手間ですが、rbenv install 1.9.3-p286もインストールしてみる。

$ rbenv versions
  1.9.2-p320
* 1.9.3-p286 (set by /home/username/.rbenv-version)
  1.9.3-p327

なんと home に.rbenv-versionファイルが作成されておりそれが読まれていたみたい。

$ cd
$ rm -rf .rbenv-version
$ rbenv global 1.9.3-p327
$ ruby -v
$ ruby 1.9.3p327 (2012-11-10 revision 37606) [i686-linux]

これで問題は解決。無事にバージョンを管理できるようになりました。しかし.rbenv-versionはなんだったんだろう。Ubuntu のパッケージつかっているとhomeディレクトリに.rbenv-versionが作られてしまうんですかね?

もしUbuntu のパッケージでバージョン変更できない人がいたら、多分このファイルを手書きで書き換えればいけるんでは。とにかく、今後はややこしい事態にならないのでもうOK!!

スポンサードリンク

RSS購読のススメ

RSS

定期的に読んでいただけるかたはRSS登録しておくと便利です。RSS登録はこちら!!

びーおーぷんどっとねっとのRSS登録

Twitterでも情報をつぶやいているので、フォローしてみるといいかもしれません。

コメントを残す

サブコンテンツ

Profile

twitter

google+
@beopener12on Google+

Facebook

サイト内検索

記事を検索したいときはここにキーワードを入れて検索ボタンをクリックすれば見つかるかも・・・

スポンサードリンク

おすすめ

このページの先頭へ