それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

パッケージ提供rubygemsを使っているとアップデートできない。

経緯:Ubuntu(Debian)のgemパッケージをUpdateできない。

昨日、Ubuntu 9.04使っててRailsが動かなくなった。Railsを動かそうとした。動かなかった。

エラーメッセージはrails require rubygems 1.3.5 ,installed gems 1.3.1
  1. aptからrubygem をインストール
  2. gem からRailsをインストール/アップデート
  3. rails が gem 最新版を要求
  4. sudo gem update --system 実行
  5. Debianではupdate --systemは実行できない ... orz

完全にStackした。

Debianではシステム環境でgem Updateはしない。

結論 DdebianのシステムGEMは使わない。

DebianのシステムGemはAptパッケージ管理下にある。Aptの依存関係解決のために、勝手なアップロードが許されない。
強引にアップデートしても良いが、stableと言えなくなる。

取り得る解決策

  1. ホームディレクトリにgem環境を作る.
  2. システム環境を更新する.
  3. Aptとは別のRuby環境を作る.

この中で、ホームディレクトリやユーザーローカルランドに独自のrubygems環境を作るのがお手軽だ。
システム環境を更新するにはAptのピンニング(aptパッケージを自動更新対象から外す。)をしないと安定動作しない。

詳しく書くと
ホームディレクトリにgem環境を作る
RUBYLIBの活用する。TakuyaユーザーだけRubyモジュール探索先を切り替える。優先度を変える。
システム環境を更新する。
apt pinning の活用。aptの管理下はハズす。その上で、Root権限でGEM更新。
Aptとは別のRuby環境を作る。
あたらしくRuby環境を/usr/local/binに作る。configure --prefix=XXX;make ; make install;export PATH=XXX


Aptピンニングは、それだけで数エントリ分量がある。


そこで、今回はホームディレクトリに自分だけのGem環境を作った。続く↓