RubyGems

RubyGems
Ruby用のパッケージ管理システムのプログラム(gemと呼ぶ)やライブラリを管理するパッケージシステム

RubyGems

    • Rubyのプログラム(gemと呼ばれる)やライブラリを配布するための標準のフォーマット
    • インストールされているgemパッケージを管理するための使いやすいツール
    • RubyGemsをインストールしているマシンからgemを提供するためのサーバユーティリティ 
    • gemパッケージを公開する標準的な方法

を提供してくれます。

RubyGems is the premier ruby packaging system. It provides:
・A standard format for distributing Ruby programs and libraries.
・An easy to use tool for managing the installation of gem packages.
・A gem server utility for serving gems from any machine where the RubyGems is installed.
・A standard way of publishing gem packages.

http://docs.rubygems.org/read/book/1

以下、RVM管理下にある「ruby-1.9.2-p136」について話を進めていきます。

RubyGemsのバージョン確認

次のコマンドでRubyGemsのバージョンを確認することができます。

gem --version

このコマンドを実行して、インストールされているRubyGemsのバージョンを確認します。

goh:~ goh$ gem --version
1.5.0
goh:~ goh$ 

RubyGemsのアップデート

2011.02.11現在、RubyGemsの最新バージョンは「1.5.2」なので、アップデートしてみます。
 http://rubyforge.org/projects/rubygems/
 http://rubygems.org/
以下のサイトの手順*1に従ってRubyGemsをアップデートしてみます。
 http://docs.rubygems.org/read/chapter/3#page14
RubyGemsのアップデートの方法は大きく分けて2種類あります。

    • コマンドでアップデートする
    • 最新のRubyGemsをダウンロードしてインストールし直す

まずは、コマンドでアップデートしてみます。
RubyGemsのバージョンが「0.8.5」以上であれば、次のコマンドでRubyGemsをアップデートすることができます。*2

gem update --system

インストールされているバージョンは「1.5.0」なので、実行してみましたが、エラーが発生してしまいました。

goh:~ goh$ gem update --system
Updating RubyGems
ERROR:  While executing gem ... (NoMethodError)
    undefined method `version' for nil:NilClass
goh:~ goh$

以下のいずれかを満たす場合、

    • RubyGemsのバージョンが「0.8.5」より古い
    • RubyGemsのバージョンが「1.2.0」
    • 「gem update --system」コマンド実行時「Nothing to update」と表示された

アップデートするには、次のコマンドを実行する必要があるようです。

gem install rubygems-update
update_rubygems

「gem install rubygems-update」は、「rubygems-update」というgemをインストールするコマンドです。
そこで「rubygems-update」がインストールされているか調べてみることにしました。

インストールされているgemの確認

次のコマンドでインストールされているgemを確認することができます。

gem list

実行してみると、「rake」しかインストールされていないことがわかりました。

goh:~ goh$ gem list

*** LOCAL GEMS ***

rake (0.8.7)
goh:~ goh$ 

gem「rubygems-update」のインストール

次のコマンドを実行して、最新の「rubygems-update」をインストールすることができます。

gem install rubygems-update
update_rubygems

実行してみると、RubyGemsを「1.5.2」にアップデートできました。

goh:~ goh$ gem install rubygems-update
Fetching: rubygems-update-1.5.2.gem (100%)
Successfully installed rubygems-update-1.5.2
1 gem installed
Installing ri documentation for rubygems-update-1.5.2...
Installing RDoc documentation for rubygems-update-1.5.2...
goh:~ goh$ update_rubygems
RubyGems 1.5.2 installed

=== 1.5.2 / 2011-02-10

NOTE:  RubyGems 1.5.0 and 1.5.1 have a broken <tt>gem update --system</tt>.

To upgrade you'll need to use the manual upgrade recipe.  Using sudo/su as
appropriate:

  $ gem install rubygems-update
  $ update_rubygems

Bug Fixes:

* Fixed <tt>gem update --system</tt>.  RubyGems can now update itself again.


------------------------------------------------------------------------------

RubyGems installed the following executables:
	/Users/goh/.rvm/rubies/ruby-1.9.2-p136/bin/gem

goh:~ goh$

「1.5.0」「1.5.1」の「gem update --system」コマンドは壊れていたんですね。
以下のサイトを見てみましたが、「gem update --system」コマンドが壊れているという情報は見当たりませんでした。
 http://docs.rubygems.org/
 http://rubygems.org/
アップデートしないと、コマンドが壊れていたことがわからないというのは、うれしくないです…
コマンド実行後、インストールされているかどうかを「gem list」コマンドで確認しました。

goh:~ goh$ gem list

*** LOCAL GEMS ***

rake (0.8.7)
rubygems-update (1.5.2)
goh:~ goh$ 

元々「rubygems_update」がインストールされていなかったので、「gem install rubygems_update」コマンドを実行すると最新版がインストールされました。
このため「rubygems_update」コマンドを実行する必要はなかったと思われます。

*1:3.3 Updating RubyGems

*2:必要に応じて「sudo」コマンドを使ってください