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コマンドの引数を書き換えてください.