How-To: Apache 2 mod-xslt unter Ubuntu 14.04

Hach war das noch schön unter Ubuntu 10.04. Ein apt-get install libapache2-modxslt && a2enmod modxslt && /etc/init.d/apache2 restart und schon konnte man das automatische XML-/XSLT-Parsing aktivieren. Heraus kamen suchmaschinenfreundliche HTML-Antworten, und das vollkommen automatisch.

Aber aus irgendwelchen Gründen (wobei ich da einen Verdacht habe^^) hat Ubuntu/Debian(?) das Paket rausgeschmissen:

sudo apt-get install libapache2-modxslt
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
E: Paket libapache2-modxslt kann nicht gefunden werden.

Also heißt das, selber kompilieren (oder für die Bequemen, siehe Punkt 4). Leider gab es trotz Anleitung des Autors noch ein kleines Problem zu umschiffen. Aber der Reihe nach.

1. Quellen runterladen

Und hier umschiffen wir gleich das Problem, welches bei mir auftrat. Wir laden nicht wie in der Anleitung angegeben die aktuelle Release-Version (tag) 1.4.3., sondern den letzten Commit runter. Der beinhaltet nämlich einen wichtigen Fix für das Paket libxml2 mit Versionsnummern >= 2.9.0.

Download Sourcecode mod-xslt2-1.4.3 inkl. libxml2 v2.9-Fix

2. System fürs Kompilieren vorbereiten

Hier eine Empfehlung generell: Erstellt fürs Kompilieren eine extra VM (virtuelle Maschine) und installiert da Debian/Ubuntu rein. Ich nehm dann i.d.R. die Version, unter der das Paket nachher später auch laufen soll – in meinem Fall also Ubuntu 14.04 Server. Das eigentliche Einrichten und Installieren des apache2-Webservers erspar ich mir hier. Hier nur die Pakete, die fürs Kompilieren von mod-xslt notwendig sind:

sudo apt-get install devscripts equivs libpcre3-dev autotools-dev libxslt1-dev libxml2-dev libapr1-dev libgcrypt11-dev apache2-prefork-dev

Dann das runtergeladene Paket mod-xslt-master.zip auf Euer Zielsystem kopieren (oder mit wget direkt von dort runterladen) und entpacken.

wget https://github.com/ccontavalli/mod-xslt/archive/master.zip
unzip mod-xslt-master.zip

3. mod-xslt als Debianpaket kompilieren

Erstellen und Installieren der Build-Abhängigkeiten:

sudo mk-build-deps -i ./mod-xslt-master/debian/control

Debian-Pakete erstellen:

cd mod-xslt-master
debuild -d

Das „-d“ musste ich nehmen, da er den neuen Apache 2.4 wohl nicht richtig erkennt und man damit einen sonst auftretenden Fehler ignoriert.

Wenn der Build-Prozess abgeschlossen ist, sollten sich im Verzeichnis einige .deb-Pakete befinden.

4. Für die Bequemen

Wer den ganzen Spaß mit der VM erstellen, Ubuntu mit Apache installieren, Quellcode kompilieren und Debianpakete erstellen nicht machen will, für den hab ich hier meine kompilierten Debianpakete für Ubuntu 14.04 (ungetestet auf anderen Ubuntu/Debian-Versionen):

mod-xslt2-1.4.3 Debian-Pakete

5. mod-xslt auf Zielsystem installieren

auf dem Zielsystem libxslt1.1 installieren:

sudo apt-get install libxslt1.1

Die Debian-Pakete aufs Zielsystem kopieren und mit

sudo dpkg -i *.deb

installieren.

Die Bequemen müssen vorher noch mein Archiv auspacken:

tar xzfv mod-xslt2_xml2.9-fixed.tgz

6. mod-xslt und XML/XSLT-Parsing aktivieren

mod-xslt im Apache2 aktivieren:

sudo a2enmod modxslt
sudo service apache2 restart

im entsprechenden vHost des Apache2 folgendes eintragen, um das Filtern von .xml-Dateien durch mod-xslt zu aktivieren:

<Directory /var/www/httpdocs>
    AddOutputFilter mod-xslt .xml
</Directory>

und Apache-Configs neu laden:

sudo service apache2 reload

Nun sollten Aufrufe von .xml-Dateien zusammen mit den zugehörigen xsl-Stylesheets automatisch zu Server-Antworten im HTML-Format führen. Für weitere Infos verweise ich hier auf die Wiki von mod-xslt.

3 Gedanken zu „How-To: Apache 2 mod-xslt unter Ubuntu 14.04“

  1. dpkg: dependency problems prevent configuration of libapache2-modxslt:
    libapache2-modxslt depends on libmodxslt1; however:
    Package libmodxslt1 is not installed.

    Aber
    E: Package ‚libmodxslt1‘ has no installation candidat

Schreibe einen Kommentar

Kommentare müssen vor der Veröffentlichung freigegeben werden. Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * gekennzeichnet. Bitte beachte auch die Datenschutzhinweise bzgl. des Kommentierens und des Widerspruchsrechts.