为什么gem安装会忽略PKG_CONFIG_PATH

时间:2018-12-17 00:35:08

标签: ruby rubygems pkg-config

我正在尝试安装一个libxml-ruby gem来构建本机扩展。我已将PKG_CONFIG_PATH设置为libxml2的正确位置,并使pkg-config可以看到它:

$ pkg-config --list-all | grep -i xml
libxml-2.0                          libXML - libXML library version2.

不幸的是,宝石建造过程没有:

$ gem install libxml-ruby
...
checking for libxml/xmlversion.h in /opt/include/libxml2,/opt/local/include/libxml2,/usr/local/include/libxml2,/usr/include/libxml2... no
*** extconf.rb failed ***
...
extconf failure: need libxml2.

路径列表虽然不包含预期的位置:

$ pkg-config --cflags libxml-2.0
-I/usr/local/Cellar/libxml2/2.9.8/include/libxml2

为什么pkg-config设置在这里会被忽略/如何使gem build尊重它?

1 个答案:

答案 0 :(得分:0)

如果我们查看如何为{strong> libxml-ruby 实现extconf.rb,它将无法在 find_header()的预定义位置中找到标头。但是:

Install the library or try one of the following options to extconf.rb:

  --with-xml2-config=/path/to/xml2-config
  --with-xml2-dir=/path/to/libxml2
  --with-xml2-lib=/path/to/libxml2/lib
  --with-xml2-include=/path/to/libxml2/include

尝试:

gem install libxml-ruby -- --with-xml2-dir=/usr/local/Cellar/libxml2/2.9.8 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.8/lib --with-xml2-include=/usr/local/Cellar/libxml2/2.9.8/include/libxml2

因此,对于软件包安装-makefile由gem的extconf.rb构建。它可以使用 pkg-config dir_config 或两者同时使用;如果是这种宝石-它是dir_config,它是使用命令行选项设置的。