Rubygemsがhomeディレクトリに入ってしまう
現象
gem list で表示されるのに、gem uninstall してもエラーになってしまう。
例えばgrowlnotifierを抜こうとする。
$ sudo gem uninstall growlnotifier [~] ERROR: While executing gem ... (Gem::InstallError) Unknown gem growlnotifier >= 0
原因
インストール時のPathが違っていた。homeディレクトリ下の.gemに入ってしまっていた。
gemが入っているpathを指定すれば、uninstallできる。
$ gem uninstall -i ~/.gem/ruby/1.8/ growlnotifier
なんでそんなとこに?
まずは自分の rubygem 環境。
$ gem env RubyGems Environment: - RUBYGEMS VERSION: 1.3.1 - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9] - INSTALLATION DIRECTORY: /opt/local/lib/ruby/gems/1.8 - RUBY EXECUTABLE: /opt/local/bin/ruby - EXECUTABLE DIRECTORY: /opt/local/bin - RUBYGEMS PLATFORMS: - ruby - x86-darwin-9 - GEM PATHS: - /opt/local/lib/ruby/gems/1.8 - /Users/hoge/.gem/ruby/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - :sources => ["http://gems.rubyforge.org/", "http://gems.github.com"] - REMOTE SOURCES: - http://gems.rubyforge.org/ - http://gems.github.com
大抵は sudo gem install するので、下記のGEM PATHSにインストールされる。
- /opt/local/lib/ruby/gems/1.8
しかし、sudo を付け忘れると、GEM PATHS のうちインストール可能なPATHに入れてしまうようだ。
- /Users/hoge/.gem/ruby/1.8
こっちにインストールされてしまう。
しかも、 sudo gem uninstall するときには、/Users/... の方は見てくれないようだ。
まとめ
現象追っかけてみただけで、rubygemsのソースは見てません。
uninstall 時も GEM PATHS を全部検索してくれるといいのになー。