web-dev-qa-db-de.com

Wie installiere ich XML :: Parser ohne expat-devel?

XML :: Parser kann nicht auf einer recht frischen 64-Bit-Debian-Box aufbauen. Nach der Ausgabe von cpan XML::Parser schlägt cpan mit vielen Fehlern zu Expat.c und Expat.xs fehl:

[...]
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

Die Meldung am Anfang der Ausgabe erklärt, dass expat-devel zum Erstellen benötigt wird.

Expat muss vor dem Erstellen von XML :: Parser installiert werden, und ich kann es nicht in den Standard-Bibliotheksverzeichnissen finden. Installieren Sie das 'expat-devel'-Paket mit Ihrem OS-Paketmanager. Siehe 'README'.

Aber expat-devel ist nicht im Debian-Repository.

Ist es möglich, darüber hinwegzukommen, ohne Expat aus dem Quellcode erstellen/installieren zu müssen?

13
Alois Mahdal

Das Paket, das Sie installieren möchten, heißt libexpat1-dev. Sie können libxml-parser-Perl auch einfach über apt-get installieren. Wenn Sie wirklich über CPAN installieren möchten, installieren Sie zunächst die Abhängigkeiten der Debian-Pakete über apt-get build-dep libxml-parser-Perl.

43

libexpat1-dev enthält sowohl libexpat als auch expat.h, die beide ebenfalls in der Nachricht erwähnt werden:

Wenn expat installiert ist, aber in einem nicht standardmäßigen Verzeichnis, dann verwenden Sie die folgenden Optionen Für Makefile.PL:

EXPATLIBPATH = ... Legt das Verzeichnis fest, in dem libexpat gesucht wird

EXPATINCPATH = ... Zum Festlegen des Verzeichnisses, in dem expat.h gesucht werden soll

Die Installation von libexpat1-dev scheint das Problem zu lösen:

$ aptitude install libexpat1-dev
9
Alois Mahdal

Es gibt immer die manuelle Methode - Expat aus Quelle erstellen/installieren. (Dieses Beispiel zeigt die Installation an einem anderen Ort für XAMPP | LAMPP )

Download von: 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 - Suchen und Herunterladen von 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
5
LadyBuzz

Arbeiten Sie wie ein Zauber in Ubuntu 15.04. Das einzige, was ich brauche, ist die Installation von Perl XML Parser mit:

Sudo apt-get install libxml-parser-Perl

Und den Anweisungen hier folgend konnte ich alle meine Bewertungen erfolgreich in Rhythmbox importieren. Jetzt muss ich nur noch die intelligenten Wiedergabelisten erstellen, das ist nichts im Vergleich zu meinen gesamten Libray-Bewertungen. 

3
Marcelo Santos

Heute hatte ich das gleiche Problem, als ich die neue Betaversion GIMP 2.9.4 unter OSX 10.8 und die Hilfe von Homebrew abschließen wollte.

Installieren Sie zuerst Perl

brew install Perl

Dann das XML :: Parser-Modul, indem Sie mit in die Perl-Shell gehen

Perl -MCPAN -e Shell

Installieren Sie in der Shell XML :: Parser, indem Sie Folgendes eingeben

install XML::Parser

Shell verlassen

exit

Vergewissern Sie sich nun, dass die Installation erfolgreich war. Wenn alles in Ordnung ist, wird kein Fehler angezeigt.

Perl -e "require XML::Parser"

Wenn die ./configure immer noch keinen XML :: Parser vermisst, verwendet intltools das von Ihnen installierte Perl nicht. Ein Blick auf das Skript sagt mir, dass es den Test mit $INTLTOOL_Perl -e "require XML::Parser" durchführt. Wenn Sie einen echo $INTLTOOL_Perl ausprobieren, wurde nichts ausgegeben

export $INTLTOOL_Perl=perl

Führen Sie nun erneut ./configure aus.

2
Markus Zeller

Keine der oben genannten Methoden funktionierte für mich. Ich hatte die richtigen Umgebungsvariablen eingerichtet, aber irgendwie wurden sie nicht von cpanm abgerufen, die ich zur Installation von Perl-Modulen verwende. Expat wurde auch installiert.

Folgendes habe ich getan, um das gleiche Problem zu überwinden, das OP berichtet. Dies kommt sehr nahe an dem, was @LadyBuzz vorschlug.

  1. Laden Sie den XML::Parser von cpan.org herunter
  2. Extrahieren Sie das Archiv in das Verzeichnis und gehen Sie zu ihm herunter.
  3. Öffnen Sie den Makefile.pl und bearbeiten Sie die ersten Zeilen, um die absoluten Pfade zu beiden zu haben: EXPATLIBPATH und EXPATINCPATH
  4. Speichern Sie den Makefile.pl, gehen Sie eine Ebene höher und erstellen Sie ein neues Tarball mit dem soeben bearbeiteten Makefile.pl.
  5. Führen Sie cpanm für das neu erstellte Tarball aus.

Dies führte zu einer erfolgreichen Installation des Moduls.

0
mjp