【问题标题】:Can not install json gem with ruby 2.2.3 on Ubuntu无法在 Ubuntu 上使用 ruby​​ 2.2.3 安装 json gem
【发布时间】:2015-11-14 19:51:58
【问题描述】:

我正在阅读 Rails 教程,但由于 json gem 的问题,我无法完成“捆绑安装”。当我尝试直接安装时:

me@tru2:~/rails/hello_app$ gem install json -v '1.8.3'
Building native extensions.  This could take a while...
ERROR:  Error installing json:
    ERROR: Failed to build gem native extension.

    /home/me/.rvm/rubies/ruby-2.2.3-dev/bin/ruby -r ./siteconf20150820-12793-qdkev7.rb extconf.rb
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
linking shared-object json/ext/generator.so
/usr/bin/ld: cannot find -lgmp
collect2: error: ld returned 1 exit status
make: *** [generator.so] Error 1

make failed, exit code 2

Gem files will remain installed in /home/me/.rvm/gems/ruby-2.2.3-dev/gems/json-1.8.3 for inspection.
Results logged to /home/me/.rvm/gems/ruby-2.2.3-dev/extensions/x86_64-linux/2.2.0/json-1.8.3/gem_make.out

如前所述,ruby 版本是 2.2.3。

me@tru2:~/rails/hello_app$ ruby --version
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]

运行“gem list”显示当前已安装 json 1.8.1,但默认 Gemfile 中的某些内容必须需要 1.8.3。搜索显示了许多类似的问题,但没有让我解决这个问题的答案。我尝试使用 sudo 运行,它似乎可以工作,但回到我这里问题仍然存在。

【问题讨论】:

    标签: ruby-on-rails ruby json


    【解决方案1】:

    尝试运行rvm implode,然后遵循本指南http://ryanbigg.com/2014/10/ubuntu-ruby-ruby-install-chruby-and-you/

    我怀疑 RVM 没有包含正确的标题。

    【讨论】:

    • 谢谢你,这让我更进一步。我在使用调试器 gem 时遇到错误,但我想如果我发现需要它,我可以将其注释掉并处理它。
    • 您应该尝试使用pry gem 而不是debugger gem。它适用于每个 Ruby 版本。
    【解决方案2】:

    cannot find -lgmp 表示找不到gmp库。尝试运行:

    sudo apt-get install libgmp3-dev
    

    https://github.com/flori/json/issues/253

    【讨论】:

    • 在问题中解释的完全相同的配置时为我修复了它
    • 为什么是libgmp3-devjson-1.8.3 依赖于/usr/lib/x86_64-linux-gnu/libgmp.so,在libgmp-dev 中。
    • 其实不是json,而是依赖libgmp。它是二进制的ruby(预编译),在存在libgmp 的情况下构建,这使得所有本机扩展都需要它。从源代码编译 ruby 时不会出现此问题。
    • 知道如何用 centos 做到这一点吗?用 yum 找不到包
    【解决方案3】:

    Json 1.8.3 似乎与 Ruby 2.2.3 有一些问题(尽管我预计未来的一些 Ruby 补丁可能会解决这个问题)。将 Ruby 降级到 2.2.2 对我有用。

    (也就是说,sudo apt-get install libgmp3-dev 也是如此,@alf suggested - 但如果你不能这样做,降级 ruby​​ 可能是一个可行的选择。)

    【讨论】:

    • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
    • 好的 - 其他对此投反对票的人可以发表评论告诉我为什么它没有用吗?我已经编辑了两次。谢谢
    • 我不同意,这确实提供了问题的答案。 OP 说,“我不能用 Y 版本的 Ruby 安装 X 库”,而这个答案是“改变你的 ruby​​ 版本”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 2019-10-27
    • 2020-12-08
    • 2013-06-20
    • 2023-03-02
    • 2013-06-21
    • 1970-01-01
    相关资源
    最近更新 更多