"错误:无法构建gem原生扩展"安装黄瓜时0.93

时间:2014-07-29 16:20:22

标签: ruby-on-rails ruby cucumber ruby-1.8.7

当我尝试安装黄瓜0.93时会触发此错误。 我需要安装这个特定的版本。

trabajo@fernando-Inspiron-1545:~/cucumber-rspec$ gem install cucumber -v 0.9.3
Building native extensions.  This could take a while...
ERROR:  Error installing cucumber:
    ERROR: Failed to build gem native extension.

    /home/trabajo/.rvm/rubies/ruby-1.8.7-p334/bin/ruby extconf.rb
checking for main() in -lc... yes
creating Makefile

make
gcc -I. -I. -I/home/trabajo/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/i686-linux -I. -D_FILE_OFFSET_BITS=64  -fPIC -g -O2  -fPIC  -O0 -Wall -Werror  -c gherkin_lexer_ar.c
/Users/aslakhellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl: En la función ‘CLexer_scan’:
/Users/aslakhellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl:199:29: error: la comparación siempre se evalúa como ‘true’ para la dirección de ‘raise_lexer_error’ que nunca será NULL [-Werror=address]
/Users/aslakhellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl:199:29: error: la comparación siempre se evalúa como ‘true’ para la dirección de ‘raise_lexer_error’ que nunca será NULL [-Werror=address]
cc1: all warnings being treated as errors
make: *** [gherkin_lexer_ar.o] Error 1

3 个答案:

答案 0 :(得分:1)

I had the same issues, thanks to user2707671 I did

sudo yum install ruby-devel

and the ran

gem install cucumber 

答案 1 :(得分:0)

问题是你的gcc版本正在发出警告(并将其视为错误,这会破坏编译)旧版本的gcc没有发出警告。您可以通过以下几种方式解决此问题:

  • 使用较旧的gcc。 (我不确切知道哪些版本可以使用;你必须进行实验。)

  • 将小黄瓜宝石分叉并将其更改为不使用-Werror标志。几年前,当我被困在一个旧的黄瓜上并在this blog post中描述它时,我使用了这种方法。简言之:

    • 叉子
    • 从tasks / compile.rake
    • 中删除-Werror标志
    • 安装Ragel和珠宝商和rake-compiler gems
    • 运行rake gems:posix
    • 从.gitignore
    • 删除gherkin.gemspec和ext
    • 将生成的代码添加到您的fork
    • 引用Gemfile中的fork:

      gem 'gherkin', '1.0.30', :git => 'git@github.com:fandor/gherkin.git', :branch => 'v1.0.30-no-Werror'
      

    如果我分叉的小黄瓜与你的黄瓜兼容,你甚至可以使用我的叉子。

答案 2 :(得分:0)

这个命令解决了我的问题:

sudo apt-get install ruby1.9.1-dev

见相关答案:

Unable to install gem - Failed to build gem native extension - cannot load such file -- mkmf (LoadError)