【问题标题】:Why is bundle --deployment trying to rebuild gem ffi-1.9.6?为什么 bundle --deployment 试图重建 gem ffi-1.9.6?
【发布时间】:2015-02-17 17:49:40
【问题描述】:

我在具有完整开发环境的机器上运行 bundle --deployment,然后将供应商/捆绑包复制到没有完整开发环境的第二台机器上。在第二台机器上,一个简单的 'bundle exec irb' 给出:

/usr/lib64/ruby/2.1.0/rubygems/ext/builder.rb:89:in `run':错误:无法构建 gem 原生扩展。 (Gem::Ext::BuildError)

/usr/bin/ruby.ruby2.1 extconf.rb 

mkmf.rb 在 /usr/lib64/ruby/include/ruby.h 找不到 ruby​​ 的头文件

extconf 失败,退出代码 1

bundle --deployment 不是要复制整个 gem,包括任何本机二进制文件吗?为什么要重建?

在开发机器上,安装了 libffi43、libffi-devel 和 libffi43-devel,在非开发机器上,在 SUSE SLES SP3 上只安装了 libffi43 (libffi43-4.3.4_20091019-0.37.28)。

【问题讨论】:

  • 你们的 ruby​​ 版本是一样的吗?两台机器上ruby -v返回的版本完全一样?
  • 是的,ruby -v 两者都提供 2.1.5p273(2014-11-13 修订版 48405)[x86_64-linux-gnu]。但是,我刚刚注意到其中的 Linux 内核已经从 3.0.1.101.0-35 升级到 3.0.1.101-0.40。这足以导致这种情况吗?
  • 我最近有这个问题。但就我而言,很久以前(大约六个月前)我已经安装了 ruby​​ 2.0.0-dev,当时 FFI 不打算成为 ruby​​ 核心的一部分。碰巧我已经更新到 2.0.0,所以我收到了这条消息。我的问题是 gem 认为 2.0.0-dev 和 2.0.0 是兼容的(因为 2.0.0-dev 的最后一个版本有 ffi,但不是第一个)并尝试重用 2.0.0-开发宝石,实际上并没有 ffi。就我而言,我已经通过完全删除 ruby​​(使用 rm -Rf ~/.gem)并使用 rvm 重新安装来解决。

标签: ruby-on-rails ruby bundler ffi


【解决方案1】:

我用相同的内核构建了一个开发系统,这解决了这个问题。我不会想到内核中的细微差别会导致失败。我可能忽略了其他一些修复它的小细节,但我对此表示怀疑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-18
    • 2016-02-17
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多