当我从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
你会怎么处理这个?
我可以设置GEM_PATH,但这看起来有点乱,因为我必须为我的shell和我的每个应用程序的environment.rb
文件执行此操作。
我可以尝试设置默认值,但我想这会涉及对默认安装文件进行更改,这似乎是一个坏主意。
我应该删除旧目录并重新安装所有宝石吗?这听起来很安全,但很耗时。
感谢您的反馈。
答案 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宝石分开。