Warum noch eine weitere Anleitung um PHP 5.3 zu installieren?
Weil es meiner Meinung nach nur wenige Anleitungen gibt die sich mit einem Experimental Build beschäftigen. Die meisten Anleitungen beschränken sich auf Backports und weitere Kleinigkeiten. Das Problem ist dann aber dass Sachen wie PEAR oder PECL einfach nicht mehr funktionieren. Der etwas komplizierterer Weg über einen Experimental Build ist in dem Fall eine erwähnenswerte Alternative die ich auch hier erklären werde.
Ein Experimental Build ist nicht Anderes als eine Ansamlungen von Quellcode dass vorkonfiguriert verfügbar ist aber aufgrund verschiedener Gründe nicht für den Produktiveinsatz freigegeben ist. Dies kann mehrere Ursachen haben. Meistens ist die QA des Debian Projektes wieder mal mit anderen Sachen beschäftigt. Vergleichen wir die aktuelle Debian Distribution mit der aktuellsten Ubuntu, so sind in Sachen Aktualität doch massive Unterschiede. Wer also die aktuellsten Pakete haben möchte, muss entweder auf Backports zurückgreifen oder kompilliert sich selber die passenden. Dieser Artikel geht auf das Kompillieren eines Experimental Builds ein und da Ubuntu ja auf Debian basiert sollte das fertige Paket auch problemlos zu installieren sein.
Vorbereitung
Da die Installation komplett unter einer Konsole geschieht, sind grundlegende Kentnisse der Shell notwendig. Die Installation wurde auf einem jungfräulichen System gemacht um alle Eventualitäten auszuschließen. Ich empfehle stark das Verwenden einer virtuellen Maschine wie VirtualBox, VmWare oder Ähnliche. In dem Fall verwende ich als Gastsystem Ubuntu 9.04 und als Host einen Hyper-V.
Update (3. Dezember 2009): Ich hab es gerade eben auf Ubuntu 9.10 installiert. Geht ohne Probleme
Während des Kompillieren könnt ihr übrigens ruhig mal für ein paar Stunden an die frische Luft gehen. Bei mir hat es circa zwei Stunden gedauert. Erwähnenswert ist eventuell noch folgendes Zitat:
Never touch a running system!
Auf gut Deutsch: Nicht unbedingt auf einem Produktivserver installieren, besonders nicht wenn euer Job davon abhängt. Der Titel sagt es ganz deutlich: Wir bauen uns ein Experimental Build.
Installation
Zuerst sollte man sich das Paket installieren dass notwendig ist damit wir Debian Pakete bauen können. Versierte Admins würden behaupten es geht auch ohne aber man muss sich das Leben ja nicht schwerer machen. Nebenbei halten wir das System auch auf den aktuellsten Stand.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
Nachdem das erledigt ist müssen alle Pakete gezogen werden die nachher beim Kompillieren notwendig sind um potentielle Konflikte zu lösen. In dem Fall wollen wir nachher ein PHP5 Build erstellen und müssen dafür die Abhängigkeiten lösen. Das geht ganz einfach mit
sudo apt-get build-dep php5
Ich hoffe ihr habt euch inzwischen nen neuen Kaffee gezogen denn solange hat es bei mir gedauert bis alle Pakete drauf waren. Jetzt gehts an die Wurst. Debian listet auf seiner Webseite immer die aktuellsten Pakete auf inklusive den passenden Downloadlink. Übersichtshalber findet ihr für PHP 5.3 den Link unter http://packages.debian.org/de/source/experimental/php5. Aber eigentlich lässt sich dieser Schritt komplett überspringen. Also zieht man sich jetzt einfach den kompletten Quellcode, patcht ihn und stoßen den Compiler an.
sudo -s
mkdir -p /source/php
cd /source/php
wget http://ftp.de.debian.org/debian/pool/main/p/php5/php5_5.3.0.orig.tar.gz
wget http://ftp.de.debian.org/debian/pool/main/p/php5/php5_5.3.0-3.diff.gz
wget http://ftp.de.debian.org/debian/pool/main/p/php5/php5_5.3.0-3.dsc
tar -xvzf php5_5.3.0.orig.tar.gz
mv php-5.3.0 php5-5.3.0
cat php5_5.3.0-3.diff.gz |gunzip |patch -p0
cd php5-5.3.0
chmod +x debian/rules
dpkg-buildpackage -us -uc
apt-get install firebird2.0-dev libc-client-dev libmcrypt-dev libmysqlclient15-dev
Puhh, wenn es hier Probleme gibt könnt ihr das mal posten. Möglicherweise kann ich da helfen oder ein anderer hilfsbereiter User. Im Idealfall ist das Ding ohne Probleme durchgelaufen und die Pakete lassen sich ganz bequem mit dem Paketmanager installieren.
sudo dpkg -i *.deb
Jetzt müsste der Paketmanager wegen ungelöste Abhängigkeit herummeckern also lösen wir die mal mit
sudo apt-get install -f
Nun noch schnell einen Test im Browser machen nachdem wir Apache neu gestartet haben. Jetzt kräftig auf die eigene Schulter klopfen oder dem PC mal ne Pause gönnen
sudo /etc/init.d/apache2 restart

phpinfo mit php 5.3
So, das wars. Bei Anregungen zu dem Artikel oder Kritik oder einfach nur weil ihr Danke sagen wollts, könnt ihr mir gerne einen Kommentar hinterlassen.