Da führt man zu Monatsbeginn auf dem heimischen Linux-Server vor lauter Blödheit ein
# apt-get dist-upgrade
durch und sieht sich plötzlich mit Apache 2.4 konfrontiert.
Nachdem man die Zugriffsprobleme mit IP- und Host-basierten Regeln in allen .htaccess-Dateien behoben hat, realisiert man erst, dass der Web-Server nicht starten will, weil das DAV-Modul „svn“ nicht mehr gefunden wird:
Unknown DAV provider: svn
Was zum Geier?
Die Ursache des Problems ist rasch gefunden: Das Paket libapache2-svn hat eine Abhängigkeit vom Paket apache2.2-common, doch mit Apache 2.4 hat letzteres Paket seine Daseinsberechtigung verloren und ist folglich nicht mehr auf dem System vorhanden. Zu allem Unglück hinzu unterstützt Subversion in der Debian-Version 1.6.17dfsg-4+deb7u3 Apache 2.4 gar nicht.
Nach längerem Herumsuchen im Internet komme ich zum Schluss, dass wirklich nichts an der auf Stackoverflow herumgebotenen Lösung vorbeiführt: Ich muss Subversion doch tatsächlich in der derzeit aktuellen Version 1.7.9 (Debian: 1.7.9-1+nmu3) aus der Quelle kompilieren und danach auf dem System installieren. Diese Version kennt und unterstützt Apache 2.4.
Nachfolgend eine rudimentäre Anleitung, welche sich an den Stackoverflow-Artikel anlehnt.
Anleitung
Zuerst benötigen wir folgende Pakete, um Subversion gegen das aktuell installierte Apache 2.4 kompilieren zu können:
# apt-get install apache2-dev # apt-get build-dep subversion
Bei mir war anschliessend noch manuell die Installation von folgendem Paket nötig:
# apt-get install libserf1 libserf-dev
Jetzt geht es an das Herunterladen des Subversion-Quellcodes:
$ cd /tmp $ apt-get source --compile subversion checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes ... (Ctrl+C)
Richtig gelesen: Während das Teil vor sich hinkompilieren will, bricht man die Durchführung mittels Ctrl+C ab. Denn zuerst sind noch einige kleinere Anpassungen an den Kompilierungseinstellungen nötig, damit man am Ende nicht nur mit Subversion, sondern auch mit einem Paket libapache2-svn dasteht.
In /tmp/subversion-1.7.9/debian/rules ändert man dazu folgenden Wert:
ENABLE_APACHE := yes
Und in /tmp/subversion-1.7.9/debian/control fügt man zuunterst folgenden Text ein:
... Package: libapache2-svn Section: httpd Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Suggests: db5.1-util Description: Subversion server modules for Apache This package provides the mod_dav_svn and mod_authz_svn modules for the Apache 2.2 web server. These modules provide Subversion's WebDAV server backend, to serve repositories over the http and https protocols. See the 'subversion' package for more information.
Schlussendlich startet man die Kompiliererei erneut, verzichtet dieses Mal aber mit dem Attribut DEB_BUILD_CONFIG, dass nach der Kompilierung stundenlang Tests durchgeführt werden, diese scheitern und man nach dem Warten auf Godot ohne .deb-Pakete dasteht (via DEB_BUILD_OPTIONS=nocheck):
$ cd /tmp/subversion-1.7.9/ $ DEB_BUILD_OPTIONS=nocheck dpkg-buildpackage -b -uc
Anschliessend installiert man die folgenden drei Pakete:
# dpkg -i /tmp/libsvn1_1.7.9-1+nmu3_i386.deb # dpkg -i /tmp/libapache2-svn_1.7.9-1+nmu3_i386.deb # dpkg -i /tmp/subversion_1.7.9-1+nmu3_i386.deb
Schlussendlich muss man in Apache unter /etc/apache2/mods-enabled noch die folgenden Module aus /etc/apache2/mods-available symlinken, wenn sie nicht schon dort sind:
- authz_svn.load
- dav_svn.conf
- dav_svn.load
Dann noch das obligate …
# /etc/init.d/apache2 restart
… und gut is!