LoginSignup
2
2

More than 5 years have passed since last update.

Ruby1.9.2系からソースコードをビルドしてRuby1.9.3p484にアップデートする方法、またはアップデート直後で自分が引っかかった部分とそれに対する処方箋

Posted at

Rubyにおいて「浮動小数点数パースにおけるヒープオーバーフロー (CVE-2013-4164)」なんていう危なげなものがあったので、サーバ上のRubyのバージョンを上げることにしたよ。
作業にかかった時間はおおよそ20~30分程度かな。

アップデートする前の注意点

1.9.3に切り替えた時、こんなエラーがちょくちょく出る場合があるんだ。

/usr/local/lib/ruby/1.9.1/yaml.rb:83:in `’:
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.

解決策: libyamlを入れる

(これを放置することによって起こる弊害は未検証だよ)

導入手順

$ su -
# cd /usr/local/src
# wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
# tar -zxvf yaml-0.1.4.tar.gz
# cd yaml-0.1.4
# ./configure
# make
# make install

rubyのアップデート

$ su -
# cd /usr/local/src
# cd (旧版のrubyのあるディレクトリ)
# cat .installed.list | xargs rm
# cd ../
# wget http://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p484.tar.gz 
# tar zxvf ruby-1.9.3-p484.tar.gz
# cd ruby-1.9.3-p484
# ./configure
# make
# make install
  1. rootではいる
  2. 旧版rubyを削除
  3. 新しいのをDL
  4. 解凍
  5. configureしてmakeしてインストール

導入完了!

完了後、バージョンチェックしてみよう。

$ ruby -v
ruby 1.9.3p484 (2013-11-22) [i686-linux]

おまけ:libyamlを入れる前にうっかり間違えてrubyを入れ替えた場合

なんてことはない。
libyamlを導入(前述)してrubyを再インストールしよう。
以下を実行すれば多分大丈夫。

# cd /usr/local/src/ruby-1.9.3-p484
# cat .installed.list | xargs rm
# make clean
# make
# make install

番外編: rbenvを使ったバージョン切り替え

ローカルのrubyを更新する場合等。
ruby-buildをアップデートしないと新しいバージョンが一覧に出てこない。

詳細はこのへんが詳しい。
http://qiita.com/kawasy/items/5d000afa6571c71c2723
ちなみにgithubからの場合でgitコマンドを動かすのは(普通に入れていれば)この場所。

$ cd ~/.rbenv/plugins/ruby-build/

場所がわからなくてあたふたしたので補則。

番外編: railsとか何やらが起動しない

こんなのが出ちゃう。

found a tab character that violate intendation while scanning a plain scalar at line 59 column 9 (Psych::SyntaxError)

原因:ruby1.9.2と1.9.3でYAMLのライブラリが変わったから。
http://qiita.com/udzura/items/ec4c5b83db94363c9cdf
解決法:使ってるYAMLファイルにタブ文字が入っているので、grepして探してそれを修正する。
grepのタブ文字検索の方法は以下を参照のこと
http://akio0911.net/archives/3051

ちなみに1.9.2ではタブ文字が入っていようが起動するみたい。

参考資料

http://d.hatena.ne.jp/donbulinux/20111111/1321004527
http://pyyaml.org/wiki/LibYAML
http://d.hatena.ne.jp/mikage014/20091021/p1
http://d.hatena.ne.jp/koziy/20111104/1320370451
http://centos.bungu-do.jp/archives/000294.html
http://tech.tmd45.jp/entry/2013/07/03/182414
http://fjordegg.tumblr.com/post/36575034137/day-13-mysql-readme
http://www.smokeymonkey.net/2013/11/ruby-on-macbook.html
http://qiita.com/udzura/items/ec4c5b83db94363c9cdf
http://akio0911.net/archives/3051

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2