【问题标题】:Can't build gem -- native extension build fails -- can you see why?无法构建 gem —— 原生扩展构建失败—— 你知道为什么吗?
【发布时间】:2011-05-27 05:21:58
【问题描述】:

我不知道这里出了什么问题——有什么想法吗?

我在 Ubuntu 8.04 LTS 上运行,并按照以下说明安装了 libxml2 和 libxslt:

http://www.techsww.com/tutorials/libraries/libxml/installation/installing_libxml_on_ubuntu_linux.php

http://www.techsww.com/tutorials/libraries/libxslt/installation/installing_libxslt_on_ubuntu_linux.php

但是,我安装了最新版本:

libxslt-1.1.24
libxml2-2.7.3

安装很顺利

--------我设置LD_LIBRARY_PATH ---------- ------------

回显$LD_LIBRARY_PATH
/usr/local/libxslt/lib:

------------- 似乎该函数存在——至少基于字符串的输出 ------------
/usr/local/libxslt/lib$ 字符串 * | grep ParseStylesheetDoc
xsltParseStylesheetDoc
xsltParseStylesheetDoc
xsltParseStylesheetDoc
xsltParseStylesheetDoc
xsltParseStylesheetDoc
xsltParseStylesheetDoc
xsltParseStylesheetDoc

----------------------- 但是编译仍然失败------------------- ---------------------

sudo gem 安装 webrat
构建原生扩展。这可能需要一段时间...
错误:安装 webrat 时出错:
错误:无法构建 gem 原生扩展。

/usr/local/bin/ruby extconf.rb 安装 webrat
检查 /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/local/include,/usr/local/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/local/include,/usr/local/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/local/include,/usr/local/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/local/include,/usr/local/include/libxml2,/usr/include,/usr/include/libxml2...是
检查 -lxml2 中的 xmlParseDoc()... 是
检查 -lxslt 中的 xsltParseStylesheetDoc()...否
缺少 libxslt。尝试 'port install libxslt' 或 'yum install libxslt-devel'
*** extconf.rb failed ***
由于某种原因无法创建 Makefile,可能缺少
必要的库和/或头文件。查看 mkmf.log 文件了解更多信息
细节。您可能需要配置选项。

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/ruby
--with-iconv-dir
--without-iconv-dir
--with-iconv-include
--without-iconv-include=${iconv-dir}/include
--with-iconv-lib
--without-iconv-lib=${iconv-dir}/lib
--with-xml2-dir
--without-xml2-dir
--with-xml2-include
--without-xml2-include=${xml2-dir}/include
--with-xml2-lib
--without-xml2-lib=${xml2-dir}/lib
--with-xslt-dir
--without-xslt-dir
--with-xslt-include
--without-xslt-include=${xslt-dir}/include
--with-xslt-lib
--without-xslt-lib=${xslt-dir}/lib
--with-xml2lib
--without-xml2lib
--with-xsltlib
--without-xsltlib

Gem 文件将继续安装在 /usr/local/lib/ruby/gems/1.8/gems/nokogiri-1.3.3 中以供检查。
结果记录到 /usr/local/lib/ruby/gems/1.8/gems/nokogiri-1.3.3/ext/nokogiri/gem_make.out

【问题讨论】:

    标签: webrat


    【解决方案1】:

    在 Ubuntu 中,您需要执行以下步骤: sudo apt-get install libxml2-dev sudo apt-get install libxslt-dev

    【讨论】:

    • 我想这是理想的解决方案!
    【解决方案2】:

    Jared Evans 在他的博客上this post 描述了一个在 Ubuntu 8.04 LTS 上为我工作的解决方案。他的诀窍是不使用apt-get 来安装rubygems,而是从源代码构建它。这对我很有用。他的帖子是针对安装rails,所以我使用了这些(稍作修改)步骤来安装nokogiri:

    首先使用 APT-GET 安装 Ruby:

     sudo apt-get update
     sudo apt-get install ruby irb ri rdoc ruby1.8-dev libzlib-ruby
      libyaml-ruby libreadline-ruby libncurses-ruby libcurses-ruby libruby
      libruby-extras libfcgi-ruby1.8 build-essential libopenssl-ruby
      libdbm-ruby libdbi-ruby libdbd-sqlite3-ruby sqlite3 libsqlite3-dev
      libsqlite3-ruby libxml-ruby libxml2-dev
    

    除了 JARED 的说明之外,我还安装了(我不确定 libxslt1.1 是否必要):

     sudo apt-get install libxslt1.1
     sudo apt-get install libxslt1-dev
    

    下载 RUBYGEMS 源:

    从 ruby​​forge 下载latest RubyGems(当前为 1.3.6)(我使用的是 zip 包)。

    构建红宝石:

     cd /TO/DIRECTORY/WHERE/YOU/UNZIPPED/rubygems-1.3.6/
     sudo ruby setup.rb
     sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
    

    安装 NOKOGIRI:

     sudo gem update –system
     sudo gem install nokogiri
    

    响应将是:

    1 gem installed
    Installing ri documentation for nokogiri-1.4.1...
    
    No definition for parse_memory
    
    No definition for parse_file
    
    No definition for parse_with
    
    No definition for get_options
    
    No definition for set_options
    Installing RDoc documentation for nokogiri-1.4.1...
    
    No definition for parse_memory
    
    No definition for parse_file
    
    No definition for parse_with
    
    No definition for get_options
    
    No definition for set_options
    

    我还没有注意到由“无定义”消息引起的任何问题...

    【讨论】:

      【解决方案3】:

      尝试删除 libxslt* 并重新安装它们。这解决了我的问题。

      【讨论】:

      • 我用默认的 ./configure 运行重新安装了 libxslt,它修复了它。基本上相同的解决方案。谢谢
      【解决方案4】:

      您必须安装这些库的开发工具包。

      【讨论】:

      • 是的,但问题是,虽然安装看起来正确,但它没有工作。重建库的解决方案应该没用。但是,在我作为 OP 的情况下,以及我标记为答案的发帖人的情况下,它都解决了问题。没有意义,但就是这样。
      【解决方案5】:

      尝试安装到非标准位置时出现相同的错误(因为我无权访问主目录之外的目录)。似乎这个答案只是安装到 /usr 中的默认位置以获得成功。还是我误会了?

      如果有帮助,请在 http://groups.google.com/group/nokogiri-talk/browse_thread/thread/c1e909be09e90f5a 上了解有关我正在尝试做的事情的更多信息。

      【讨论】:

        【解决方案6】:

        以下是在 Ubuntu 11.04 (natty) 上对我有用的方法:

        sudo apt-get install libxslt-dev libxml2-dev

        sudo gem install nokogiri

        【讨论】:

          猜你喜欢
          • 2012-03-22
          • 1970-01-01
          • 2020-07-21
          • 1970-01-01
          • 2015-07-20
          • 2015-06-18
          • 2016-03-08
          • 2012-07-26
          相关资源
          最近更新 更多