无法更新RubyGems

13
我尝试更新RubyGems从版本1.1.1到最新版,但遇到了困难。我尝试了以下方法:

gem update

结果:

正在更新已安装的gems
正在批量更新Gem源索引,来源为:http:/ / gems.rubyforge.org /
没有需要更新的内容

gem install rubygems-update

结果:

正在批量更新Gem源索引,来源为:http:/ / gems.rubyforge.org /
正在批量更新Gem源索引,来源为:http:/ / gems.rubyforge.org /
错误:安装rubygems-update时出错:
    rubygems-update需要builder(>=0)

gem install rubygems-update update_rubygems

结果:

正在批量更新Gem源索引,来源为:http:/ / gems.rubyforge.org /
正在批量更新Gem源索引,来源为:http:/ / gems.rubyforge.org /
错误:安装rubygems-update时出错:
    rubygems-update需要builder(>=0)
错误:无法在本地或存储库中找到update_rubygems

接着我像类似问题中的theIV建议的那样,检查了一下我的远程源中是否有http://gems.rubyforge.org/。以下是 RubyGems 环境:

RubyGems 环境:
  - RUBYGEMS 版本: 1.1.1
  - RUBY 版本: 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
  - 安装目录: /Library/Ruby/Gems/1.8
 - RUBY 可执行文件: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
  - RUBYGEMS 平台:
    - ruby
    - universal-darwin-9
  - GEM 路径:
    - /Library/Ruby/Gems/1.8
    - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
  - GEM 配置信息:
    - :update_sources => true
    - :verbose => true
    - :benchmark => false
    - :backtrace => false
    - :bulk_threshold => 1000
  - 远程源:
    - http://gems.rubyforge.org

所以,你们有任何想法吗?

8个回答

11

没有必要采取如此激烈的措施,例如完全重建Ruby、从头安装Rubygems或安装版本管理器来解决这个问题。只是由hoe 2.3.0版本引入了一个依赖循环:

rubygems-update 1.3.5需要(除其他事项外)hoe-seattlerb
hoe-seattlerb需要hoe >= 2.3.0
hoe >= 2.3.0需要rubygems >= 1.3.1

我写了一篇博客文章,zipizap链接到了它。简而言之:

  1. 如果您已经尝试更新,请先卸载最新的rubygems-update: sudo gem uninstall rubygems-update -v 1.3.5
  2. 更新到1.3.0: sudo gem install rubygems-update -v 1.3.0
  3. sudo update_rubygems
  4. 然后更新到最新版本:sudo gem update --system

随着Rubygems 1.3.6的发布,这个问题看起来可能已经解决了。从发布说明中可以看出:

  • 开发依赖项不再添加到rubygems-update gem中,因此旧版本可以成功更新。

1
实际上,我相信我刚刚成功地进行了一次更新(在ruby 1.8.7下),使用gem install rubygems-update(它显示1.5.0),然后跟着gem update --system,这也使我到达1.5.0。接着必须再用gem update来让bundler重新工作起来。 - conny
终于,在几天的搜索之后,我回到了我喜爱的网站,惊奇地发现有一个解决Debian禁用gem update --system问题的方法!非常感谢。 - Mike

7

嗨 - 我理解你的痛苦。首先问一个显而易见的问题; 你是否使用sudo执行了这些命令? 因此,你会使用sudo gem install rubygems-updatesudo update_rubygems

如果这样不行,再次下载gems源并从头开始重建(可能需要删除之前的源下载等)。您可能需要阅读HiveLogic article on installing Ruby, RubyGems, etc on Mac OS Snow Leopard

如果这还不行... :) 我可能会采取激烈的措施并重新构建Ruby。


谢谢,伙计 :) 是的,我用sudo运行了所有命令。我会阅读你提到的文章...最终可能会重建所有内容。 - o01
很高兴听到这个消息 - 祝你重建顺利。既然是这样的话,你能否把我的回答标记为答案呢? - BigBrother

5

相似的问题,不同的解决方法

$ sudo gem install rubygems-update update_rubygems
Updating metadata for 1 gems from gems.rubyforge.org/
.
complete
ERROR:  Error installing rubygems-update:
        rubygems-update requires builder (>= 0)
ERROR:  could not find update_rubygems locally or in a repository

并且

$ sudo 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.                      

我的解决方法: 前往http://docs.rubygems.org/read/chapter/3#page13 手动安装,即获取rubygems.... tgz并进行安装。 希望可以帮助到某些人。

同意这个解决方案。当 gem 安装/更新命令无效时,我在 Mac OS X 上进行了操作。 - Ryan

1

问题似乎被检测并报告为依赖循环:需要一些新版本依赖项才能安装新的宝石版本...是的,这很混乱。我看到的推荐解决方案是采用逐步中间版本升级的方式进行升级,以使升级过渡平稳,版本差距小。在这篇文章中可以详细了解: 链接文本

阅读了这篇文章并尝试了几次后,我发现仍然非常模糊/复杂。

因此,我选择了另一种解决方案,它安装了更多的内容,但更加直接:

  • 安装更新版本的ruby + irb + rdoc + gem(与已有的旧版本并存)

  • 现在安装gem“Ruby Version Manager”(在debian/ubuntu中无需烦恼,它可以编译最新的ruby版本)link text

  • 使用RVM安装最终和最新的ruby版本(再次并存)并保持其更新。

  • (现在您可以使用RVM卸载系统中较旧的ruby/gem版本,并仅保留最新的ruby版本)

如果您需要用于生产系统,RVM已被视为足够成熟,以便使用较新版本更新ruby/gems。

希望它能帮助像我这样的初学者“排除障碍”


1
有没有试过运行gem install builder命令?这似乎是你需要安装rubygems-update的必要步骤。

尝试了这个,结果:错误:无法在本地或存储库中找到构建器。 - o01

1

我遇到了类似的问题,通过执行以下命令我成功升级了: sudo gem update --system


这对我来说很有效,用于更新OS X 10.6.x上的rubygems 1.3.5,似乎比其他更复杂的建议要简单得多。 - Chris Markle

0

注意:RubyGems 1.1和1.2在没有安装rubygems-update的情况下升级存在问题。如果您看到“Nothing to update”(无需更新)的提示,则需要使用以下说明。如果您安装了旧版本的RubyGems,则仍然可以分两步完成:

$ gem install rubygems-update  # again, might need to be admin/root
$ update_rubygems              # ... here too

-2

从源代码重新构建它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接