无法构建gem - 原生扩展构建失败 - 你能看出原因吗?

时间:2009-08-04 04:14:05

标签: webrat

我无法弄清楚这里出了什么问题 - 任何想法?

我在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 -------------------- --------------

echo $LD_LIBRARY_PATH
  的/ usr /本地/的libxslt / lib中:

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

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

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

/ usr / local / bin / ruby​​ extconf.rb install 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 ... yes
检查/ 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 ... yes
检查/ 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 ... yes
检查/ 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 ... yes
在-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

6 个答案:

答案 0 :(得分:5)

在Ubuntu中,您需要按照以下步骤操作: sudo apt-get install libxml2-dev sudo apt-get install libxslt-dev

答案 1 :(得分:1)

<{3}}在他的博客上的Jared Evans描述了一个在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来源:

从rubyforge下载this post(目前为1.3.6)(我使用了zip包)。

建立RUBYGEMS:

 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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

关于我在http://groups.google.com/group/nokogiri-talk/browse_thread/thread/c1e909be09e90f5a尝试做什么的更多背景信息,如果这有用的话。

答案 5 :(得分:0)

这是在Ubuntu 11.04(natty)上对我有用的东西:

sudo apt-get install libxslt-dev libxml2-dev

sudo gem install nokogiri