安装nokogiri – 无法构建gem原生扩展

在Ubuntu 12上安装Nokogiri时,我收到一个错误:

Installing nokogiri (1.4.4) with native extensions Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /usr/bin/ruby1.9.1 extconf.rb extconf.rb:10: Use RbConfig instead of obsolete and deprecated Config. checking for libxml/parser.h... yes checking for libxslt/xslt.h... yes checking for libexslt/exslt.h... yes checking for iconv_open() in iconv.h... yes checking for xmlParseDoc() in -lxml2... yes checking for xsltParseStylesheetDoc() in -lxslt... yes checking for exsltFuncRegister() in -lexslt... yes checking for xmlFirstElementChild()... yes checking for xmlRelaxNGSetParserStructuredErrors()... yes checking for xmlRelaxNGSetParserStructuredErrors()... yes checking for xmlRelaxNGSetValidStructuredErrors()... yes checking for xmlSchemaSetValidStructuredErrors()... yes checking for xmlSchemaSetParserStructuredErrors()... yes creating Makefile make compiling html_sax_parser_context.c compiling xml_io.c compiling xml_entity_reference.c compiling xml_schema.c compiling xml_element_content.c compiling xml_reader.c compiling xml_sax_push_parser.c compiling xml_sax_parser.c compiling xslt_stylesheet.c compiling xml_element_decl.c compiling xml_node.c compiling xml_cdata.c compiling xml_processing_instruction.c compiling xml_entity_decl.c compiling xml_attribute_decl.c compiling xml_xpath_context.c xml_xpath_context.c: In function 'xpath_generic_exception_handler': xml_xpath_context.c:184:3: error: format not a string literal and no format arguments [-Werror=format-security] cc1: some warnings being treated as errors make: *** [xml_xpath_context.o] Error 1 Gem files will remain installed in /home/alex/.bundler/tmp/22194/gems/nokogiri-1.4.4 for inspection. Results logged to /home/alex/.bundler/tmp/22194/gems/nokogiri-1.4.4/ext/nokogiri/gem_make.out An error occurred while installing nokogiri (1.4.4), and Bundler cannot continue. Make sure that `gem install nokogiri -v '1.4.4'` succeeds before bundling. 

我已经安装了libxslt-dev和libxml2-dev,但是如你所见,它没有帮助。

我该如何解决?

是否有特定原因需要1.4.4而不是最新的1.5.6? 否则我建议升级。

Nokogiri更改日志显示他们已在1.5.4中修复此问题:

在使用-Werror=format-security强化Debian系统上构建支持。 #680。

我偶然发现这个尝试在ubuntu 13.04上安装bigbluebutton

我解决了这个技巧,编译恢复系统范围内的-Wformat-security gcc标志

小心做第一个rm 它可以打破你的整个系统!

 rm /usr/bin/gcc nano /usr/bin/gcc ## contents of /usr/bin/gcc #!/bin/sh gcc-4.7 $* -Wno-format-security ## save and exit chmod u+x /usr/bin/gcc gem install nokogiri -v '1.4.4' 

@Confusion有正确的想法。

Bundler可能在Gemfile和/或Gemfile.lock中被锁定为nokogiri-1.4.4。 @ Confusion运行bundle更新的答案应该允许你的Ruby Bundler环境使用成功安装的nokogiri-1.5.6。