Назад | Перейти на главную страницу

Установка RubyGem не может найти файлы заголовков

Я использую Ruby 1.9.3 на CentOS 5.3. Я установил его, скомпилировав Ruby 1.9.3 из исходников вместе с libyaml. Я также использую rbenv для управления версиями, поэтому я поместил скомпилированную установку в ~ / .rbenv / versions / 1.9.3-p286, где rbenv хранит версии Ruby.

Все работает отлично, и сейчас я устанавливаю Gems. Однако один драгоценный камень, в частности, еще не устанавливается, что заставляет меня думать, что я могу упустить зависимость. Это внутренний гем, поэтому его нет в RubyGems, но вот результат установки гем:

Building native extensions.  This could take a while...
ERROR:  Error installing vmc-helper:
        ERROR: Failed to build gem native extension.

        /home/fs/.rbenv/versions/1.9.3-p286/bin/ruby extconf.rb
checking for expat.h... no
checking for xmlparse.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Я парень Debian, поэтому не очень разбираюсь в пакетах Redhat / RPM и тому подобном, поэтому я не уверен, какие зависимости мне не хватает в моей системе, чтобы установить этот Gem.

Может ли кто-нибудь помочь мне узнать, какие пакеты мне нужно установить для этих недостающих файлов заголовков, отсутствующих выше?

Найдите недостающие файлы:

checking for expat.h... no
checking for xmlparse.h... no

Теперь используйте yum для поиска пакета, который предоставляет эти файлы:

yum provides */expat.h

Здесь вы увидите несколько пакетов. Вы ищете тот, который содержит /usr/include/expat.h поскольку это стандартный каталог include. Итак, установите указанный пакет:

yum install expat-devel

Повторите процесс для другого файла:

yum provides */xmlparse.h

Здесь вы потерпите неудачу и получите ошибку No matches found. В этом случае вам нужно будет либо прочитать исходный код гема, либо связаться с его разработчиком, чтобы узнать, какой пакет он / она имел в виду для вас. Он должен быть указан в документации гема как системное требование (если разработчик позаботился о написании документации).