处理默认GEM_PATH的建议

时间:2010-09-10 19:09:30

标签: ruby-on-rails ruby rubygems

当我从rubygems 1.3.5升级到1.3.7时,我的GEM_PATH发生了变化。 gem environment给了我

- GEM PATHS:
- /usr/lib/ruby/gems/1.8
- /home/me/.gem/ruby/1.8 

......而以前是/var/lib/gems/1.8

你会怎么处理这个?

  1. 我可以设置GEM_PATH,但这看起来有点乱,因为我必须为我的shell和我的每个应用程序的environment.rb文件执行此操作。

  2. 我可以尝试设置默认值,但我想这会涉及对默认安装文件进行更改,这似乎是一个坏主意。

  3. 我应该删除旧目录并重新安装所有宝石吗?这听起来很安全,但很耗时。

  4. 感谢您的反馈。

2 个答案:

答案 0 :(得分:1)

改变宝石路径与更新RubyGems没有任何关系。它与你有两个并行安装的RubyGems这一事实有关:来自你通过APT和另一个安装的Debian软件包存储库。

解决方案很简单:不要这样做。

Debian RubyGems已被修补以在/var/lib/gems中安装其宝石,RubyGems.Org中的RubyGems使用/usr/lib/ruby/gems如果可写,则~/.gem

你应该从不混合几种不同的RubyGems安装,你应该特别不要混合Debian-RubyGems和普通的RubyGems。 安装来自Debian的RubyGems并仅使用 使用APT 从RubyGems安装RubyGems来更新它。组织并仅使用 通过gem update --system更新它。请注意,这也适用于YARV,它包含自己的RubyGems副本。 如果你使用Debian-RubyGems,那么你必须使用Debian打包的YARV版本,因为只有YARV的Debian软件包已被修补以删除RubyGems并使用Debian提供的一个。

不知何故,你设法将你的Debian-RubyGems“更新”为一个普通的,这实际上不是一个更新,但实际上更像是一个单独的安装。这实际上不应该发生,因为Debian-RubyGems删除了更新功能。这就是我的 Debian安装的RubyGems打印:

gem update --system
# ERROR:  While executing gem ... (RuntimeError)
# gem update --system is disabled on Debian. RubyGems can be updated using the 
# official Debian repositories by aptitude or apt-get.

1.3.5很老了,所以可能错误检查不在那里,虽然我对此表示怀疑。 AFAIK错误检查是在1.2时间框架内的某处引入的。

答案 1 :(得分:0)

使用rvm避免此问题。 您可以创建use new gemsets,与current宝石分开。