わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

UbuntuでRubyスナップショットをビルド

Ubuntuで,Rubyの最新版および安定版スナップショットをビルドし,つまずきどころを確認しました.
VMware Player 5.0.1の仮想OSで動かしました.Ubuntu 12.10の64 bit版ISOイメージ(ubuntu-12.10-desktop-amd64.iso)をダウンロードしてインストール.ログインのあと,言語の設定(Language Support)で日本語を使えるようにし,300件近くのパッケージアップデートを行っておきます.自分用には,apt-get install zsh screen vim lvを実行して,ビルドのための設定を~/.zshrcに書きました.
それでビルドですが,

$ ruby-install

は無事に行えました.ビルドに限れば,apt-get installで何かパッケージを入れることなく,できたのでした.
しかしこの状態では,以下のとおり,gemでうまくいきません.

$ which ruby
(略)/bin/ruby/bin/ruby
$ ruby -v
ruby 2.1.0dev (2013-02-28 trunk 39531) [x86_64-linux]
$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.0)
io-console (0.4.2)
json (1.7.7)
minitest (4.3.2)
psych (2.0.0)
rake (0.9.6)
rdoc (4.0.0)
test-unit (2.1.0.0)
$ gem install pry
ERROR:  Loading command: install (LoadError)
        cannot load such file -- openssl
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

上記の「*** LOCAL GEMS ***」からあとの出力は,Rubyの最新版スナップショットをインストールしたら使えるようになったものです.
引っかかったのはその次で,「gem install pry」に失敗します.pryに限らず,どのgemパッケージも,ダインロードできません.というのも,「openssl」がロードできないと言っているためです.
対策としては次のとおり,devパッケージをインストールします.

$ sudo apt-get install libssl-dev libreadline-dev zlib1g-dev

「libssl-dev」は,openssl対応です.「libreadline-dev」を入れておかないと,pryなど,コマンド履歴を扱うものを使用するときにエラーが出ます.「zlib1g-dev」は,zlib対応です.

それでビルドをやり直します(もしここまでご覧になって,同じようにやってみたいがエラーの再現までは不要,という方は,「sudo apt-get install libssl-dev libreadline-dev zlib1g-dev; ruby-install」としてください).

$ ruby-install

これで,

$ gem install pry

がうまくいきます.gemパッケージとしては,coderay,slop,method_source,pryがインストールされます.
安定版スナップショット(1.8.8dev)にも,手を加えましょう.1.8系統はgemコマンドが入っていませんので,RubyGemsのサイトからダウンロードしてビルドします.

$ use-ruby18
$ which ruby irb gem
(略)/bin/.ruby-ss/bin/ruby
(略)/bin/.ruby-ss/bin/irb
(略)/bin/ruby/bin/gem
$ ruby -v
ruby 1.8.8dev (2013-02-24) [x86_64-linux]
$ cd ~/src
$ wget http://production.cf.rubygems.org/rubygems/rubygems-2.0.0.tgz
$ tar xf rubygems-2.0.0.tgz
$ cd rubygems-2.0.0
$ ruby setup.rb
$ rehash
$ which ruby irb gem
(略)/bin/.ruby-ss/bin/ruby
(略)/bin/.ruby-ss/bin/irb
(略)/bin/.ruby-ss/bin/gem

最新のRubyGemsのソースを取得したければ,http://rubygems.org/pages/downloadを開いて表示される中の「TGZ」のURLをコピーし,wgetコマンドの引数を書き換えてください.