Как установить XML :: Parser без expat-devel? - PullRequest
13 голосов
/ 14 марта 2012

XML :: Parser не в состоянии собрать на достаточно свежем 64-битном компьютере Debian.После выдачи cpan XML::Parser происходит сбой cpan с множеством ошибок о Expat.c и Expat.xs:

[...]
Expat.xs:2182: error: ‘CallbackVector’ has no member named ‘skip_until’
Expat.c: In function ‘XS_XML__Parser__Expat_Do_External_Parse’:
Expat.c:2904: error: ‘XML_Parser’ undeclared (first use in this function)
Expat.c:2904: error: expected ‘;’ before ‘parser’
Expat.xs:2194: error: ‘parser’ undeclared (first use in this function)
make[1]: *** [Expat.o] Error 1
make[1]: Leaving directory `/root/.cpan/build/XML-Parser-2.41-rpV6ok/Expat'
make: *** [subdirs] Error 2
  TODDR/XML-Parser-2.41.tar.gz
  /usr/bin/make -- NOT OK
Running make test
  Can't test without successful make
Running make install
  Make had returned bad status, install seems impossible

Сообщение в начале вывода объясняет, что необходимо expat-devel для сборки.

Expat должен быть установлен до сборки XML :: Parser, и я не могу найти его в каталогах стандартной библиотеки.Установите пакет expat-devel с помощью диспетчера пакетов вашей ОС.См. «README».

Но expat-devel отсутствует в репозитории Debian.

Возможно ли обойти это без необходимости сборки / установки expatиз источника?

Ответы [ 6 ]

43 голосов
/ 14 марта 2012

Пакет, который вы хотите установить, называется libexpat1-dev. Вы также можете просто установить libxml-parser-perl через apt-get. Или, если вы действительно хотите установить через CPAN, попробуйте сначала установить зависимости пакетов Debian с помощью apt-get build-dep libxml-parser-perl.

9 голосов
/ 14 марта 2012

libexpat1-dev содержит как libexpat, так и expat.h, которые также упоминаются в сообщении:

Если установлен expat, но в нестандартномзатем используйте следующие параметры для Makefile.PL:

EXPATLIBPATH = ... Чтобы указать каталог, в котором нужно найти libexpat

EXPATINCPATH = ... Установить каталог, в которомfind expat.h

Установка libexpat1-dev, похоже, решает проблему:

$ aptitude install libexpat1-dev
5 голосов
/ 25 апреля 2012

Всегда есть ручной метод - собрать / установить экспат из источника.(В этом примере показана установка в альтернативное местоположение для XAMPP | LAMPP )

Загрузка из: http://sourceforge.net/projects/expat/files/expat/

tar zxf /[where-ever]/expat-2.1.0.tar.gz -C /tmp
cd /tmp/expat-2.1.0
/opt/lampp/bin/perl ./configure --prefix=/opt/lampp LDFLAGS=-L/opt/lampp/lib 
make
make install

http://search.cpan.org - поиск дляи скачать - XML ​​:: Parser

tar zxf /[where-ever]/XML-Parser-2.41.tar.gz -C /tmp
cd /tmp/XML-Parser-2.41
/opt/lampp/bin/perl ./Makefile.PL EXPATLIBPATH=/opt/lampp/lib EXPATINCPATH=/opt/lampp/include
make
make test
make install
3 голосов
/ 24 мая 2015

Работайте как шарм в Ubuntu 15.04. Единственное, что мне нужно, это установить Perl XML Parser с:

sudo apt-get install libxml-parser-perl

И, следуя приведенным здесь инструкциям, я смог успешно импортировать все свои оценки в Rhythmbox. Теперь единственная работа, которую мне нужно сделать, - это снова создать умные списки воспроизведения, это ничто по сравнению со всеми моими рейтингами библиотек.

2 голосов
/ 21 июля 2016

Сегодня у меня возникла та же проблема: я хотел скомпилировать новую бета-версию GIMP 2.9.4 для OSX 10.8 и с помощью homebrew.

Сначала установить perl

brew install perl

Затем XML:: Модуль Parser, перейдя в оболочку perl с помощью

perl -MCPAN -e shell

и внутри оболочки установите XML :: Parser, набрав

install XML::Parser

Выход из оболочки

exit

Теперь убедитесь, что он был успешно установлен.Если все в порядке, вы не увидите ошибку.

perl -e "require XML::Parser"

Если ./configure все еще не удается пропустить XML :: Parser, то intltools не использует установленный вами perl.Глядя на скрипт, я узнаю, что он выполняет тест с $INTLTOOL_PERL -e "require XML::Parser".Попытка echo $INTLTOOL_PERL ничего не дала, поэтому волшебство - установить его с помощью

export $INTLTOOL_PERL=perl

Теперь запустите ./configure снова.

0 голосов
/ 08 июня 2017

Ни один из вышеперечисленных методов не работал для меня. У меня были правильные настройки переменных среды, но они как-то не были подхвачены cpanm, который я использую для установки модулей Perl. Экспат также был установлен.

Вот что я сделал, чтобы преодолеть ту же проблему, о которой сообщает OP. Это очень близко к тому, что предложил @ LadyBuzz .

  1. Скачать XML::Parser с cpan.org
  2. Распакуйте архив в каталог и спуститесь в него.
  3. Откройте Makefile.pl и отредактируйте первые строки, чтобы фактически иметь абсолютные пути к обоим: EXPATLIBPATH и EXPATINCPATH
  4. Сохраните Makefile.pl, поднимитесь на один уровень и создайте новый тарбол с Makefile.pl, который вы только что отредактировали.
  5. Выполнить cpanm на только что созданном tarball.

Это привело к успешной установке модуля.

...