Debian sidのrubygems1.9.1がエラーになるのを一時回避
(注意:この件は現在のDebian sidでは対応されています。追記参照)
メモ。
これを書いている現在(2010.8.8)、Debian sidでruby1.9.1パッケージとrubygems1.9.1パッケージをインストールして、gemコマンドを実行すると、エラーになる。
$ gem list /usr/lib/ruby/1.9.1/rubygems/source_index.rb:68:in `installed_spec_directories': undefined method `path' for Gem:Module (NoMethodError) from /usr/lib/ruby/1.9.1/rubygems/source_index.rb:58:in `from_installed_gems' from /usr/lib/ruby/1.9.1/rubygems.rb:883:in `source_index' from /usr/lib/ruby/1.9.1/rubygems/gem_path_searcher.rb:81:in `init_gemspecs' from /usr/lib/ruby/1.9.1/rubygems/gem_path_searcher.rb:13:in `initialize' from /usr/lib/ruby/1.9.1/rubygems.rb:841:in `new' from /usr/lib/ruby/1.9.1/rubygems.rb:841:in `block in searcher' from <internal:prelude>:10:in `synchronize' from /usr/lib/ruby/1.9.1/rubygems.rb:840:in `searcher' from /usr/lib/ruby/1.9.1/rubygems.rb:479:in `find_files' from /usr/lib/ruby/1.9.1/rubygems.rb:983:in `load_plugins' from /usr/lib/ruby/1.9.1/rubygems.rb:1139:in `<top (required)>' from <internal:lib/rubygems/custom_require>:29:in `require' from <internal:lib/rubygems/custom_require>:29:in `require' from /usr/bin/gem:8:in `<main>'
ほか、require 'rubygems'しているプログラムも同様。この件は、7月上旬にDebianのBTSに報告されているので、そのうち直るはず。
とりあえずの回避策は、rubyに--disable-gemsオプションを付けること。
$ ruby1.9.1 --disable-gems /usr/bin/gem list *** LOCAL GEMS ***
原因はこんな(↓)感じか。
- ruby1.9.1パッケージの中身はRuby 1.9.2(開発版)
- ruby1.9.1パッケージでは、rubygemsまわりのライブラリを削除してパッケージ化している
- librubygems1.9.1パッケージは、Ruby 1.9.2に含まれるrubygemsではなく、rubygems.orgで配布しているものを元にしている
- ruby1.9.1パッケージでも、実はpreludeでRuby 1.9.2のrubygemsの一部を組み込んでいる
- 混ぜると危険
追記(2010.10.13)
その後、9月上旬に対応がなされました。rubygems1.9.1パッケージを廃止し、ruby1.9.1にrubygemsを統合(Ruby 1.9の元の配布形態)しています。
コメント
コメントの投稿
トラックバック
https://emasaka.blog.fc2.com/tb.php/793-5df1c3e1