【问题标题】:Cannot Bundle Install due to an error compiling Unf_ext '由于编译 Unf_ext 错误,无法捆绑安装
【发布时间】:2016-10-07 16:33:20
【问题描述】:

我正在尝试在运行 Debian Jesse (arm) 的树莓派 3 上安装 Huginn。尝试安装 unf_ext 时捆绑安装失败:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /tmp/bundler20161007-16062-unp7l7unf_ext-0.0.7.1/gems/unf_ext-0.0.7.1/ext/unf_ext
/usr/bin/ruby2.3 -r ./siteconf20161007-16062-wdgukt.rb extconf.rb

当我尝试: sudo gem install unf_ext -v '0.0.7.1' 我收到以下错误:

current directory: /tmp/bundler20161007-16062-unp7l7unf_ext-0.0.7.1/gems/unf_ext-0.0.7.1/ext/unf_ext
make "DESTDIR="
compiling unf.cc
In file included from unf/normalizer.hh:10:0,
             from unf.cc:1:

unf/table.hh:13539:25: error: narrowing conversion of ‘-27’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
  -77, -39,-124, -39,-123};

上面是一个很长的错误列表:缩小## from int to char inside {} [-Wnarrowing] 错误的转换

我正在编译:6.1.1 20160802 (Raspbian 6.1.1-11+rpi1)

我尝试了 gem 更新,但没有帮助。在 ext/unf_ext/extconf.rb 中也没有添加标志

+$CXXFLAGS += " -fsigned-char "
+

我是所有这一切的初学者,所以任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby compiler-errors raspberry-pi debian


    【解决方案1】:

    注意:我已经published my gem on Github 为人们节省了制作自己的努力。如果你想使用我的,那么只需运行这两个命令:

    wget https://github.com/appleorange1/unf_ext-0.0.6-arm/raw/master/unf_ext-0.0.6.gem
    gem install ./unf_ext-0.0.6.gem
    

    如果你想知道我是怎么做到的,请继续阅读:

    我也遇到过这个问题(在 Chromebook C201PA 上)。问题是当您运行“gem install”时,您对 ext/unf_ext/extconf.rb 所做的更改会不断被覆盖。我不确定这是为什么,但我通过创建本地 gem 解决了这个问题。

    为此,请从 this page 下载所需的上游 gem 版本。我用的是 0.0.6 版。

    然后,解压上游 gem:

    gem unpack unf_ext-0.0.6.gem
    

    提取上游 gem 后,将其重命名,以免与本地 gem 混淆。 (您不必这样做;这只是一个建议。)

    mv unf_ext-0.0.6.gem unf_ext-0.0.6-upstream.gem
    

    现在,进入解压后的 gem。

    cd unf_ext-0.0.6
    

    然后,将行 $CXXFLAGS += ' -fsigned-char' 添加到文件 ext/unf_ext/extconf.rb。 (我把它放在第三行,就在have_library('stdc++')下面。)

    vi ext/unf_ext/extconf.rb
    

    然后,您可以构建和安装 gem:

    gem build unf_ext.gemspec
    gem install ./unf_ext-0.0.6.gem
    

    【讨论】:

      【解决方案2】:

      我在 Rails 项目的 Gemfile.lock 中捆绑了更高版本时遇到了类似的错误:

      bundle install
      

      调用:

      gem install unf_ext -v '0.0.7.2'
      

      我能够修改 Gemfile.lock 并将 unf_ext 版本更改为0.0.7.4; unf_ext 库已于 2017 年 4 月更新,包括 ARM 处理器支持。阅读 GitHub 问题here

      这不像 obscurity爱好者的回答那么全面,可能会破坏您的解决方案。未经仔细考虑,请勿更改锁定的版本字符串。

      【讨论】:

        猜你喜欢
        • 2016-07-27
        • 2012-11-29
        • 2015-06-15
        • 1970-01-01
        • 1970-01-01
        • 2013-01-07
        • 2020-05-25
        • 2020-04-30
        • 1970-01-01
        相关资源
        最近更新 更多