本を読む

読書やコンピュータなどに関するメモ

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の元の配布形態)しています。

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://emasaka.blog65.fc2.com/tb.php/793-5df1c3e1

 | HOME | 

Categories

Recent Entries

Recent Comments

Recent Trackbacks

Appendix

emasaka

emasaka

フリーター。
連絡先はこのへん

Monthly


FC2Ad