Как устранить ошибку «libxml2 отсутствующий пакет» на «gem install ovirt-engine-sdk» в Windows? - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь запустить gem install ovirt-engine-sdk на компьютере с Windows 10 и сталкиваюсь со следующей проблемой:

extconf.rb:29:in `<main>': The "libxml2" package isn't available. (RuntimeError)

To see why this extension failed to compile, please check the mkmf.log which can
be found here:

C:/Ruby25-x64/lib/ruby/gems/2.5.0/extensions/x64-mingw32/2.5.0/ovirt-engine-sdk-4.2.5/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in
C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/ovirt-engine-sdk-4.2.5 for inspection.
Results logged to
C:/Ruby25-x64/lib/ruby/gems/2.5.0/extensions/x64-mingw32/2.5.0/ovirt-engine-sdk-4.2.5/gem_make.out

An error occurred while installing ovirt-engine-sdk (4.2.5), and Bundler cannot
continue.
Make sure that `gem install ovirt-engine-sdk -v '4.2.5'` succeeds before
bundling.

In Gemfile:
  fog was resolved to 2.1.0, which depends on
    fog-ovirt was resolved to 1.1.2, which depends on
      ovirt-engine-sdk

Я пытался:

  • установить libxml2 в Windows
  • попробуйте все параметры --without-libxml2-config, --without-libxml2-config, ...
  • удалите и переустановите Ruby, чтобы попробовать другие версии Ruby (моя текущая версия ruby ​​ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32]
  • попробуйте более или менее найти ответы на различные вопросы о переполнении стека

У меня заканчиваются идеи, поэтому, если бы кто-то мог понять, как мне от этого избавиться, это было бы очень ценно!

Большое спасибо!

1 Ответ

0 голосов
/ 18 января 2019

Я незнаком с ovirt-engine-sdk и не могу найти на их github никакой информации о том, что они поддерживают windows (это не гарантируется, особенно для гемов с нативными расширениями). Но мы можем определенно обойти эту конкретную ошибку. Чтобы помочь вам разобраться с подобными проблемами в будущем, вот мой процесс для устранения этой проблемы.

$ gem fetch ovirt-engine-sdk
$ gem unpack ovirt-engine-sdk-4.3.0.gem
$ cat ovirt-engine-sdk-4.3.0/ext/ovirtsdk4c/extconf.rb

Соответствующая часть здесь (найдена поиском сообщения об ошибке):

xml2_config = find_executable('xml2-config')
if xml2_config
  # other stuff
elsif !pkg_config('libxml2')
  raise 'The "libxml2" package isn\'t available.'
end

Мы видим, что он проверяет исполняемый файл с именем xml2-config. Согласно документации для find_executable , он проверяет ваш путь для этого.

Итак, это означает, что нам нужно две вещи, чтобы исправить эту ошибку:

  1. Исполняемый файл xml2-config
  2. Нам нужно добавить это к нашему пути. Похоже, это тот шаг, который вам не хватает.

Вы можете скачать с здесь - Затем добавьте в папку всю папку bin.

...