Soooo,我使用gem upgrade --system
从1.7.2升级到RubyGems 1.8.1,然后按照Eric Hodel's blog的建议立即运行gem pristine --all --no-extensions
。在运行gem
命令后遇到错误后,我搜索了一下,向gem uninstall
发现了一些带有弃用警告的宝石的建议,但后来意识到我不能,因为gem uninstall
只是错误out - 和任何其他命令一样 - 包括简单的'gem
。
当我运行任何这些命令时,我仍然收到一堆“已弃用”的警告,然后是这个回溯:
/Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:277:in `block in _resort!': undefined method `name' for nil:NilClass (NoMethodError)
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:276:in `sort!'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:276:in `_resort!'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:270:in `_all'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:402:in `each'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:477:in `map'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:477:in `find_files'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:1061:in `load_plugins'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:85:in `<top (required)>'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/bin/gem:9:in `<main>'
当我再次尝试这个时,同样的事情发生了,但是使用相同的更新命令从RubyGems 1.6.2升级。我尝试了第3次,但是使用了下面的建议来做gem install rubygems-update && update_rubygems
- 这只是导致安装失败,并且让我使用了可用的RubyGems 1.6.2。
我想a)使用RubyGems 1.8.x,以及b)撤消这些更改,而不是必须再次吹掉我的1.9.2安装 。 有任何想法吗?我正在跑步:
RubyGems Environment: - RUBYGEMS VERSION: 1.6.2 - RUBY VERSION: 1.9.2 (2011-02-18 patchlevel 180) [x86_64-darwin10.7.0] - INSTALLATION DIRECTORY: /Users/sloveless/.rvm/gems/ruby-1.9.2-p180 - RUBY EXECUTABLE: /Users/sloveless/.rvm/rubies/ruby-1.9.2-p180/bin/ruby - EXECUTABLE DIRECTORY: /Users/sloveless/.rvm/gems/ruby-1.9.2-p180/bin - RUBYGEMS PLATFORMS: - ruby - x86_64-darwin-10 - GEM PATHS: - /Users/sloveless/.rvm/gems/ruby-1.9.2-p180 - /Users/sloveless/.rvm/gems/ruby-1.9.2-p180@global - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - :sources => ["http://rubygems.org"] - REMOTE SOURCES: - http://rubygems.org
FWIW,今天(5月10日)在RubyGems错误回购中记录了类似的错误,我添加了类似的信息,here
答案 0 :(得分:5)
宝石有这个问题1. {7..8}。*。
这是我们的生产堆栈:
远离升级宝石本身,或者狗屎可能会破裂。我知道使用前沿是多么诱人,但它更像是在整个O.R中大量出血。壁。
如果你必须:
gem install rubygems-update -v 1.6.2 && update_rubygems
sudo gem install rubygems-update -v 1.6.2 && sudo update_rubygems
如果使用RVM,请务必先rvm gemset global
。
通常的警告适用,例如备份您的数据,gemsets,应用程序,不要在生产中尝试此操作。 :)
答案 1 :(得分:0)
它与RVM无关,因为我正在运行相同的版本。它也不是Ruby 1.9.2,因为我运行的是相同的版本。
gem uninstall ...
返回错误不正常。我已经在运行RVM和1.9.2的几台机器上完成了升级,并且gem本身继续正常运行。是的,我看到了被弃用的警告。
您是否可以使用gem update
运行sudo
?这可能会破坏它,因为你在RVM下运行,而sudo是一个主要的禁忌。
答案 2 :(得分:0)
嗯......在更新rubygems并执行gem pristine --all --no-extensions
后,我遇到了与您相同的错误。另一方面,我不了解使用sudo进行我的gem安装和更新的主要禁忌,所以我还有其他一些东西需要清理。但是,这就是我回到工作安装的方式:
我通过全新安装更新了rvm:http://beginrescueend.com/rvm/install/
由于我没有sudo的方式,我在这一步遇到了一些其他权限问题,但是已经过去了。我确实必须打开一个新的终端会话才能使更改生效。
然后,$ rvm rubygems current
如下所述:http://beginrescueend.com/rubies/rubygems/
此安装版本1.6.2。到目前为止,我似乎再次使用gem
命令,我的弃用警告已经消失。希望它有所帮助。