【问题标题】:Why won't bundler install JSON gem?为什么捆绑器不安装 JSON gem?
【发布时间】:2014-02-01 10:10:08
【问题描述】:

尝试运行cap production deploy 时出现以下错误。

DEBUG [dc362284]    Bundler::GemNotFound: Could not find json-1.8.1.gem for installation
DEBUG [dc362284]    An error occurred while installing json (1.8.1), and Bundler cannot continue.
DEBUG [dc362284]    Make sure that `gem install json -v '1.8.1'` succeeds before bundling.

重要的是要注意这个部署是有效的,而不是我升级到 Ruby 2.1.0 以消除编码错误。我在本地升级,效果很好。我运行了rvm install 2.1.0rvm use 2.1.0,然后更改了我的.ruby-version 文件以反映这次Ruby 升级。

bundle install 命令在本地工作,但是当我 ssh 到目标服务器并运行此命令时会产生与上述相同的错误。

如果我运行gem list,我可以在宝石列表中看到它。

...
jquery-rails (3.0.4)
json (1.8.1)
less (2.3.2)
...

如果我在本地和目标服务器上尝试推荐的解决方案 gem install json -v '1.8.1',我会得到以下输出:

Building native extensions.  This could take a while...
Successfully installed json-1.8.1
Parsing documentation for json-1.8.1
Done installing documentation for json after 0 seconds
1 gem installed

看来 gem 已安装,对吧?为什么会这样?我该如何解决这个问题?任何帮助将不胜感激。

【问题讨论】:

  • bundle show json 给你什么?
  • gem json, '1.8.1' 添加到 Gemfile
  • 不幸的是,我的 gemfile 中有 gem json, '1.8.1'
  • bundle show json give /Users/ME/.rvm/rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/gems/json-1.8.1
  • 我的 Ubuntu 上需要 sudo apt-get install ruby-dev

标签: ruby-on-rails gem capistrano bundler


【解决方案1】:
$ bundle update json
$ bundle install

【讨论】:

  • 这是在 Ruby 2.4.0 上为我完成的!
  • 也适用于 rbenv ruby​​ 2.4.1 (debian / ubuntu)
  • 这对我也有用。 Ruby 2.4.0 高山脉。谢谢!
  • 在 Ruby 版本 2.4.2p198 下也为我工作。谢谢。
  • 我赞成这个答案,因为它对我有用,而接受的答案却没有。像@Robert_T_Taylor 一样,我在 macOS High Sierra 上运行了它。
【解决方案2】:

因此,在这半天之后,几乎在发布我的问题后,我立即找到了答案。 Bundler 1.5.0 有一个错误,它无法将默认 gem 识别为 referenced here

解决方案是使用 gem install bundler -v '= 1.5.1' 更新到 bundler 1.5.1

【讨论】:

  • 即使在更新捆绑程序后也有同样的问题,更新后执行gem install json -v '1.8.1' 为我修复了错误消息。
  • gem install json -v '1.8.1' 后跟 bundle package 对我有用
  • 帮我省了几句脏话。谢谢!
  • 难道不是 bundler 应该为你安装这些 gem 的吗?我不明白为什么你必须手动安装 gems。 bundler.io/rationale.html我正在使用 Bundler 版本 1.7.11
  • 我正在使用 1.14.6 版本的捆绑程序并且也收到此错误
【解决方案3】:

运行这个命令一切都会好的

sudo apt-get install libgmp-dev

【讨论】:

  • 也为我工作 :) 谢谢!
  • @Imran 你必须把它放在 linux 终端上。我猜你正在运行 Windows?
【解决方案4】:

如果您在 MacOS Sierra 中并且您的 ruby​​ 版本是 2.4.0。ruby 版本与 json 1.8.3 不兼容。

您可以尝试在 Gemfile 中添加这一行:

gem 'json', github: 'flori/json', branch: 'v1.8'

这对我有用!

【讨论】:

  • 谢谢你,这让我省去了很多挫折!
【解决方案5】:

要解决这个问题,只需运行:

bundle update

它将更新您的捆绑程序的版本。然后运行:

bundle install

您的问题将得到解决。解决方案很好解释here

【讨论】:

  • +1 真的很有帮助,让我摆脱了困境。在bundle update 之后,安装效果很好。感谢您提供干净的解决方案。
  • bundle update 将更新您的所有宝石。 gem update bundler 将更新捆绑器。
【解决方案6】:

我找到了解决方案here。 json版本1.8.1和ruby 2.2.3有问题,所以安装json 1.8.3版本。

gem install json -v1.8.3

【讨论】:

  • 这对我来说在 OSX 和 Ubuntu 上的 json gem 的多个错误版本非常有效。在一种情况下,我不得不删除锁定文件并从头开始重建: git rm Gemfile.lock bundle install
  • 工作正常,首先我删除了Gemfile.lock,然后运行bundle install,就这样。
【解决方案7】:

你应该试试

$ sudo gem install json -v '1.8.2'

在我的情况下(Ubuntu 14.04)不能直接工作,我必须这样做:

$ sudo apt-get install ruby-dev

然后我可以安装 gem 并继续。还有一个问题已通过以下方式解决:

$ sudo apt-get install libsqlite3-dev

希望有所帮助。

【讨论】:

    【解决方案8】:

    如果推荐的答案没有帮助,因为您已经在使用较新版本的捆绑程序。试试对我有用的解决方案。

    删除供应商文件夹中的所有内容。 在您的 gemfile 中添加一行

    gem 'json', '1.8.0'
    

    然后运行 ​​- bundle update json

    这似乎是 1.8.1 的一个问题,所以回到 1.8.0 对我有用。

    【讨论】:

    • 从 ruby​​ 2.0.0 升级到 2.2.4 时工作。
    • 无需删除所有内容。 “捆绑更新 json”就足够了。
    • 使用gem 'json', '1.8.6' 为我工作。您可能想尝试一下。
    【解决方案9】:

    我在尝试使用 Sinatra 和 Postgresql(通过 activerecord)在 rvm'd ruby​​ 2.1 上运行项目时遇到此错误。我在这里找到了答案:https://github.com/wayneeseguin/rvm/issues/2511

    我的exact problem(在第一块日志条目之后):

    我在尝试为 gems 构建原生扩展时也遇到错误

    answer:

    rvm 重新安装 2.1.0 --disable-binary

    explanation:

    OSX 没有包管理器,因此所有库都必须由用户手动安装,这使得动态链接二进制文件几乎不可能,并且您可以看到(伪)静态链接的二进制文件存在问题。

    为了完整起见,我首先忘记更新 rvm (rvm get head),这产生了一些其他错误,但在我这样做后仍然需要 --disable-binary 标志。

    【讨论】:

    • 您的解决方案出现以下错误:“版本 '2.1.0' 不明确。无法选择 Ruby 实现/版本,请更具体。无法重新安装未知包 ''”
    • 您可能没有安装 ruby​​ 2.1.0,或者通过 rvm 安装了多个版本。运行rvm list,您将看到您当前的版本。使用完整的字符串(例如 ruby​​-2.0.0-p451)而不是上面提到的 2.1.0
    【解决方案10】:

    bundle update json。帮助度过难关。

    【讨论】:

    • 成功安装 json 1.8.6(原为 1.8.3)
    【解决方案11】:

    当我尝试使用 gem install json 与仅使用 bundle install 分开安装 json gem 时,我得到了 ERROR: Failed to build gem native extension.,查找时发现使用

        apt-get install ruby-dev
    

    成功了

    【讨论】:

    • 太棒了 - 你拯救了我的一天!
    【解决方案12】:

    对于 OS X,请确保您有 coreutils

    $ brew install coreutils
    $ bundle
    

    【讨论】:

    • 虽然我收到警告“警告:coreutils 8.32 已安装并且是最新的”,但还是成功了。
    【解决方案13】:

    这似乎是 Bundler 中的一个错误,无法识别与 ruby​​ 2.x 一起安装的默认 gem。即使使用最新版本的捆绑程序 (1.5.3),我仍然遇到此问题。

    一种解决方案是简单地从默认 gemspec 目录中删除 json-1.8.1.gemspec。

    rm ~/.rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/specifications/default/json-1.8.1.gemspec
    

    完成此操作后,bundler 应该可以毫无问题地找到 gem。请注意,我使用的是 chruby。如果您使用的是其他 ruby​​ 管理器,则必须相应地更新您的路径。

    【讨论】:

    • 是的,解决 json bundle 的问题很简单。谢谢
    【解决方案14】:

    我缺少 C 头文件的解决方案是为 Xcode 下载它,这是最好的方法。

    xcode-select --install
    

    希望对你有帮助。

    【讨论】:

      【解决方案15】:

      Bundle 无法安装 json -v '1.8.1' 并删除我的 Gemfile.lock 并再次运行 bundle 为我解决了这个问题。

      【讨论】:

        【解决方案16】:

        我安装了最新版的json:

        gem install json
        

        然后从 Gemfile.lock 中删除 json(1.8.1) 行并做了一个

        bundle install
        

        然后 Gemfile.lock 文件使用 json(1.8.3) 没有错误

        【讨论】:

        • 运行一个包更新为我解决了这个问题......换句话说,使用更新的 JSON gem 构建。
        【解决方案17】:

        使用 rvm 将 ruby​​ 版本从 1.9 切换到 2.2 为我完成了这项工作

        【讨论】:

          【解决方案18】:

          对我来说,前面提到的一些答案从理解的角度来看很有帮助,但这些并没有解决我的问题。

          这就是我为解决问题所做的。

          • 修改 gemfile.lock 以更新 json (2.0.2)(之前是 1.8.3
          • 检查已安装的 Bundler 版本(Bundler -v 命令)。我安装了 1.12.5 版
          • 安装捆绑器版本 1.11.2(使用 gem install bundler -v '1.11.2'
          • 然后运行捆绑安装

          【讨论】:

            【解决方案19】:

            对于 macOS Sierra:

            我在 Rails(v4.2) 项目中使用 bundler(v1.15.3) 时遇到了这个错误。 我的解决方案是gem uninstall bundler -v '1.15.3'gem install bundler -v '1.14.6'

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2017-02-21
              • 2013-09-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多