【问题标题】:Install Rails Error "invalid gem: package is corrupt"安装 Rails 错误“无效的 gem:包已损坏”
【发布时间】:2013-12-31 02:16:57
【问题描述】:

我正在运行 Mac OSX 10.9.1,并且正在使用 RVM 来管理 Ruby v2.0.0-p353。

当我尝试安装 Rails 时出现此错误:

Ryans-MacBook-Air-2:~ ryan$ gem install rails
ERROR:  Error installing rails:
invalid gem: package is corrupt, exception while verifying: undefined method`path2class' for #<Psych::ClassLoader:0x0000010c9d0be0> (NoMethodError) in /Users/ryan/.rvm/gems/ruby-2.0.0-p353/cache/i18n-0.6.9.gem

这是我安装的 gems 列表:

Ryans-MacBook-Air-2:~ ryan$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.3, 1.2.0)
bundler (1.5.1)
bundler-unload (1.0.2)
executable-hooks (1.2.6)
gem-wrappers (1.2.1)
io-console (0.4.2)
json (1.8.1, 1.7.7)
minitest (5.2.0, 4.3.2)
psych (2.0.2, 2.0.0)
rake (10.1.1, 0.9.6)
rdoc (4.1.0, 4.0.0)
rubygems-bundler (1.4.2)
rvm (1.11.3.8)
test-unit (2.5.5, 2.0.0.0)

有人有解决此问题的建议吗?

【问题讨论】:

标签: ruby-on-rails gem installation rvm


【解决方案1】:

最新版本不再具有class2path 方法,因此可以通过将 Psych gem 降级到版本 2.0.0 来避免该问题:

gem list psych   # note down latest version
gem uninstall psych -v 2.0.5  # or whatever version you have installed

安装 gem 后,如果需要,您可以再次升级 Psych gem。

【讨论】:

  • 这绝对是正确的路线。更多信息请访问github.com/tenderlove/psych/issues/182。我个人使用 RVM 升级到 2.1.1,再次捆绑,这似乎也解决了它。安装的 psych 是 2.0.3。
  • 可以 OP 将其标记为已接受。这是正确的答案。将 psych 卸载到 2.0.0,然后 gem install/bundle install 需要什么。如果需要,之后再次升级 psych。
  • Psych is bundled with current versions of Ruby 因此不再需要安装 gem;它已经在那里了。
【解决方案2】:

我也有这个确切的问题,以及你的确切环境。我尝试了很多东西,包括 Alexbhandari 添加到评论中的链接。我花了几个小时终于决定退出并彻底清除所有 ~/.rvm 文件夹并重新开始。

警告:这应该只针对新安装进行,而无需首先考虑您可能会丢失什么,例如您可能自己构建的 gemset。但是,如果它是新安装的,您将不会丢失任何无法更换的东西。

我重命名了 ~/.rvm 文件夹,这样我就有了备份并再次开始了整个安装过程。这次成功了,我实际上在大约 20 分钟内启动并运行,而不是在尝试解决问题之前浪费了几个小时。

您可以在终端窗口中使用mv 命令执行此操作。 ~/.rvm 目录在我的 $home 目录中:

Stephens-MacBook-Pro-2:~ Steve$ mv .rvm old.rvm

我知道这是一个激进的步骤,但它在新安装时对我有用,所以我希望它对未来的新手有所帮助。

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,并记得在我的终端输出中看到一些内容,说 XCode 开发人员工具已过时或未安装(我不记得是哪个)。它建议运行:

    $ xcode-select --install
    

    这样做之后,我仍然遇到问题。我尝试删除 gemset 的缓存(我正在使用 RVM),但仍然出现错误。我还在使用 ruby​​-2.0.0-p353。我做了以下事情,事情对我有用:

    $ rvm get stable
    $ rvm reload
    $ rvm install 2.1
    $ rvm gemset create your_gemset_name
    # Updated my .ruby-version and .ruby-gemset files in my Rails app to use the new gemset
    $ cd /to/my/rails/app
    # You can run $ rvm list gemsets to make sure your app is now using the new gemset. It will point to the current one being used.
    $ bundle install
    

    使用新版本的 Ruby 和新的 gemset,一切正常。不确定其他 gemset 发生了什么,但是当我尝试添加 sidekiq gem 并运行 $ bundle install 时,我首先注意到了它。

    我想知道这是否与最近的 XCode 更新有关,因为我被问及开发人员工具。

    【讨论】:

    • "rvm install 2.1" 为我做了...使用的是 2.0.0 p451。
    【解决方案4】:

    以下步骤对我有用 -

    1. 转到损坏的包/宝石位置

      $ cd /Users/ryan/.rvm/gems/ruby-2.0.0-p353/cache/

    2. 删除损坏的包/gem

      $ rm i18n-0.6.9.gem

    3. 现在安装特定的 gem 或 $ bundle install

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-27
      • 2014-01-20
      • 2016-05-02
      • 2023-03-10
      • 2015-02-11
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多