2012-12-20 56 views
3

如标题所示,由于缺少libxml2或libxslt,因此似乎没有失败。我不确定是什么使的错误。 (得到它?因为问题是在制造?嘿嘿...)Nokogiri原生扩展失败(不是libxml2或libxslt丢失问题)

Anywho,这是我得到的输出。任何想法,将不胜感激:

Building native extensions. This could take a while... 
ERROR: Error installing nokogiri: 
    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 xmlHasFeature()... 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 xml_element_content.c 
compiling xml_relax_ng.c 
compiling xml_cdata.c 
compiling xml_sax_parser_context.c 
compiling xml_node_set.c 
compiling xml_text.c 
compiling xml_sax_parser.c 
compiling xml_attribute_decl.c 
compiling nokogiri.c 
nokogiri.c: In function ‘ruby_strdup’: 
nokogiri.c:43:31: warning: conversion to ‘size_t’ from ‘long int’ may change the sign of the result [-Wsign-conversion] 
compiling xml_entity_reference.c 
compiling xml_node.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 /var/lib/gems/1.9.1/gems/nokogiri-1.5.0 for inspection. 
Results logged to /var/lib/gems/1.9.1/gems/nokogiri-1.5.0/ext/nokogiri/gem_make.out 

对于上下文,我从Ubuntu 12.04升级到12.10昨晚。我以前在这个盒子上建立了Nokogiri原生扩展,尽管我不知道它是否是相同的版本。

我也检查了我在第二篇文章“error installing nokogiri 1.5.0 with rails 3.1.0 and ubuntu” 中指定的所有软件包都无济于事。

+0

可能的问题是,你现在有一个更新的gcc,它有更严格的格式字符串检查。您可以搜索xml_xpath_context.c并尝试解决在l84报告的问题 - 这可能是将“printf”的用法替换为“fputs”的简单问题。 – slowdog

回答

5

如果你想安装引入nokogiri < 1.5.4,你必须在硬化Debian的系统问题,如Ubuntu的底层问题12

详情请看这里:https://github.com/sparklemotion/nokogiri/issues/680

您应该能够升级到1.5.4或更高版本,并且安装时不会出现此问题。

另外,你应该能够在创业板安装时设置CFLAGS环境变量,包括字符串:

-Wno-error=format-security 

-Wformat-nonliteral -Wno-format-security 

祝你好运!

5

您是否尝试过为nokogiri安装以下依赖项?

# nokogiri requirements 
sudo apt-get install libxslt-dev libxml2-dev 
sudo gem install nokogiri 
+0

请重新阅读我的文章。 – Fapiko

+0

请注意,这个工程,但你也需要这个: 'sudo apt-get install build-essential' – fagiani

7

花了我一些时间弄清楚如何追加cflags。这里是我的引入nokogiri 1.4.7命令:下面

sudo gem install nokogiri -v '1.4.7' -- --with-cflags=\"-Wformat-nonliteral -Wno-format-security\"