Почему установка gem игнорирует PKG_CONFIG_PATH - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь установить гем libxml-ruby, который собирает собственные расширения.Я установил 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 уважать это?

1 Ответ

0 голосов
/ 19 декабря 2018

Если мы посмотрим, как реализовано extconf.rb для libxml-ruby , он не сможет найти заголовки в предопределенных местах в 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

Итак, для установки пакета - make-файл собирается из файла extconf.rb из gem.Он может использовать либо pkg-config или dir_config , либо оба;в случае этого гема - это dir_config, который настраивается с помощью параметров командной строки.

...