【问题标题】:Build a gem with native extension (Gem::Installer::ExtensionBuildError)使用本机扩展构建 gem (Gem::Installer::ExtensionBuildError)
【发布时间】:2011-02-21 19:37:45
【问题描述】:

我有以下配置:

  • uname -a : Linux 2.6.24.2 i686 GNU/Linux (Ubuntu)
  • ruby -v : ruby​​ 1.9.0(2007-12-25 修订版 14709)[i486-linux]
  • rails -v : Rails 3.0.0.beta3
  • gem -v:1.3.5
  • rake --version : rake,版本 0.8.7
  • ma​​ke -v : GNU Make 3.81
  • 宝石环境:
    • RUBYGEMS 版本:1.3.5
    • RUBY 版本:1.9.0(2007-12-25 补丁级别 0)[i486-linux]
    • 安装目录:/usr/lib/ruby1.9/gems/1.9.0
    • RUBY 可执行文件:/usr/bin/ruby1.9
    • 可执行目录:/usr/bin
    • RUBYGEMS 平台:
    • 红宝石
    • x86-linux
    • 宝石路径:
      • /usr/lib/ruby1.9/gems/1.9.0
      • /root/.gem/ruby/1.9.0
    • 宝石配置:
      • :update_sources => 真
      • :详细 => 真
      • :基准 => 错误
      • :回溯 => 假
      • :bulk_threshold => 1000
    • 远程源:

当我尝试这个简单的命令时:

gem install nokogiri

这是我得到的:

# gem 安装 nokogiri 构建原生扩展。这可能需要一段时间... 错误:安装 nokogiri 时出错: 错误:无法构建 gem 原生扩展。 /usr/bin/ruby1.9 extconf.rb 检查 /opt/local/include/、/opt/local/include/libxml2、/opt/local/include、/opt/local/include、/opt/local/include/libxml2、/usr/local 中的 iconv.h /include,/usr/local/include/libxml2,/usr/include,/usr/include/libxml2,/usr/include,/usr/include/libxml2...是的 检查 /opt/local/include/、/opt/local/include/libxml2、/opt/local/include、/opt/local/include、/opt/local/include/libxml2、/usr 中的 libxml/parser.h /local/include,/usr/local/include/libxml2,/usr/include,/usr/include/libxml2,/usr/include,/usr/include/libxml2...是的 检查 /opt/local/include/、/opt/local/include/libxml2、/opt/local/include、/opt/local/include、/opt/local/include/libxml2、/usr 中的 libxslt/xslt.h /local/include,/usr/local/include/libxml2,/usr/include,/usr/include/libxml2,/usr/include,/usr/include/libxml2...是的 检查 /opt/local/include/、/opt/local/include/libxml2、/opt/local/include、/opt/local/include、/opt/local/include/libxml2、/usr 中的 libexslt/exslt.h /local/include,/usr/local/include/libxml2,/usr/include,/usr/include/libxml2,/usr/include,/usr/include/libxml2...是的 检查 -lxml2 中的 xmlParseDoc()... 是 检查 -lxslt 中的 xsltParseStylesheetDoc()... 是 检查 -lexslt 中的 exsltFuncRegister()... 是 检查 xmlRelaxNGSetParserStructuredErrors()... 是 检查 xmlRelaxNGSetParserStructuredErrors()... 是 检查 xmlRelaxNGSetValidStructuredErrors()... 是 检查 xmlSchemaSetValidStructuredErrors()... 是 检查 xmlSchemaSetParserStructuredErrors()... 是 创建 Makefile 制作 抄送-I。 -I/usr/include/libxml2 -I/usr/include -I/usr/include/ruby-1.9.0/i486-linux -I/usr/include/ruby-1.9.0 -I. -DHAVE_XMLRELAXNGSETPARSERSTRUCTUREDERRORS -DHAVE_XMLRELAXNGSETPARSERSTRUCTUREDERRORS -DHAVE_XMLRELAXNGSETVALIDSTRUCTUREDERRORS -DHAVE_XMLSCHEMASETVALIDSTRUCTUREDERRORS -DHAVE_XMLSCHEMASETPARSERSTRUCTUREDERRORS -I/opt/local/include/ -I/opt/local/include/libxml2 -I/opt/local/include -D_FILE_OFFSET_BITS= g -fPIC -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline -o xml_document_fragment.o -c xml_document_fragment.c 在从 ./nokogiri.h:75 开始的包含文件中, 从 ./xml_document_fragment.h:4, 从 xml_document_fragment.c:1: ./xml_document.h:5:16: 错误: st.h: 没有此类型的文件或文件夹 制作:*** [xml_document_fragment.o] 错误 1 Gem 文件将继续安装在 /usr/lib/ruby1.9/gems/1.9.0/gems/nokogiri-1.4.1 中以供检查。 结果记录到 /usr/lib/ruby1.9/gems/1.9.0/gems/nokogiri-1.4.1/ext/nokogiri/gem_make.out

“gem_make.out”文件包含与上述完全相同的信息。

如果我尝试使用其他宝石:

gem install gherkin

这是我得到的:

u# gem install gherkin 构建原生扩展。这可能需要一段时间... 错误:安装小黄瓜时出错: 错误:无法构建 gem 原生扩展。 /usr/bin/ruby1.9 extconf.rb 检查 -lc 中的 main()... 是 创建 Makefile 制作 抄送-I。 -I/usr/include/ruby-1.9.0/i486-linux -I/usr/include/ruby-1.9.0 -I. -D_FILE_OFFSET_BITS=64 -fPIC -fno-strict-aliasing -g -fPIC -o gherkin_lexer_ar.o -c gherkin_lexer_ar.c /Users/aslakhellesoy/scm/gherkin/tasks/../ragel/i18n/ar.c.rl:11:16: erreur: re.h : Aucun fichier ou dossier de ce type 制作:*** [gherkin_lexer_ar.o] Erreur 1 Gem 文件将继续安装在 /usr/lib/ruby1.9/gems/1.9.0/gems/gherkin-1.0.30 中以供检查。 结果记录到 /usr/lib/ruby1.9/gems/1.9.0/gems/gherkin-1.0.30/ext/gherkin_lexer_ar/gem_make.out

事实上,每当我尝试安装带有本机扩展的 gem 时,都会遇到相同类型的错误。

这会给任何人敲响警钟吗?

【问题讨论】:

    标签: ruby-on-rails ubuntu rubygems ruby-on-rails-3 bundler


    【解决方案1】:

    Issue #116 of Nokogiri 似乎说明了一切:

    不支持 Ruby 1.9.0。您应该升级到 1.9.1-p129 甚至 1.9.2。 1.9.0 太破,无法支持。 :-(

    我现在可能想更新这个小红宝石...

    【讨论】:

    【解决方案2】:

    nokogiri 你可以试试here

    对于其他 gem,您可以 check here 解决 ruby​​ 1.9 兼容性问题

    【讨论】:

    • 您建议的 nokogiri 页面是关于在 Mac OS 环境中安装它。我确实尝试使用源代码安装 gem,但它没有成功。而且我不确定问题是否与 Ruby 1.9 兼容性有关,因为我可以将它全部安装在我的 Windows 工作站上,但不能安装在 Ubuntu 服务器上。不过,我对其他提议持开放态度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 2012-06-07
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多