PHP 5.2 telepítése csomagból Debian Squeeze-re

Ez a rövid howto azoknak lehet hasznos, akik szeretnének minél előbb frissíteni squeeze-re, de tartanak attól, hogy az 5.3-as PHP miatt kompatibilitási problémák merülhetnek fel (a tapasztalat sajnos azt mutatja, hogy van mitől tartani).

Rögtön az elején leszögezném, hogy senkit sem akarok az 5.2-es PHP telepítésére buzdítani, ugyanis a squeeze-ben jelenleg fellelhető 5.3.2-es kiadásban rengeteg bugot és biztonsági rést javítottak a lenny meglehetősen régi, 5.2.6-os verziójához képest. Noha a squeeze még csak testing fázisban van, ám a legfrissebb értesülések szerint karácsony környékére várható a release, így ezt követően már szinte kötelező lesz az átállás az 5.3-as PHP-ra. Az alábbi módszerrel némi időt nyerhetünk a frissítésből eredő problémák megoldására.

A leírás feltételezi, hogy egy tisztán telepített Squeeze rendszerünk van, ami csak a beépített repositorykat használja. A csomagkészítés lépései:

1. Adjuk hozzá a Lenny tárolóit az /etc/apt/sources.list fájlhoz:

deb http://ftp.hu.debian.org/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://ftp.hu.debian.org/debian/ lenny main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

2. Frissítsük a csomaglistát:

apt-get update

3. Töltsük le az 5.2.6-os PHP forráscsomagját:

cd /usr/local/src
apt-get source php5=5.2.6.dfsg.1-1+lenny9

4. A sikeres fordítás érdekében telepítenünk kell a függőségeket:

apt-get build-dep php5
apt-get install build-essential

5. Aktualizáljuk a függőségeket a forráskönyvtárban lévő debian/control fájlban:

vi /usr/local/src/php5-5.2.6.dfsg.1/debian/control

Cseréljük le az alábbi csomagnevek összes előfordulását:

libdb4.6-dev -> libdb4.8-dev
firebird2.0-dev -> firebird2.1-dev

6. A squeeze-hez adott fordítói toolok sajnos bugosak (vagy csak "túl újak" az 5.2-es PHP-hoz), ezért downgrade-elni kell őket a lenny-ben lévő verziókra:

apt-get install libtool=1.5.26-4+lenny1 automake=1:1.10.1-3 automake1.4=1:1.4-p6-13 autoconf=2.61-8

Meg lehet próbálni a csomaggenerálást az aktuális verziókkal is, de én azt tapasztaltam, hogy a squeeze-hez adott toolokkal nem fut le a configure szkript, valószínűleg hibás paraméterátadás miatt.

7. Ha minden feltétel adott, indítsuk el a csomaggenerálást rootként:

dpkg-buildpackage -uc -b

Elméletileg nem elvárás, hogy rootként fusson a folyamat, de én azt tapasztaltam, hogy normál userként futtatva "permission denied" hibaüzenetek generálódnak a fordítás után. Root-jogok nélküli futtatáshoz használjuk az alábbi parancsot:

dpkg-buildpackage -rfakeroot -uc -b

Ha szerencsénk van, és nem fut hibára a fordítás, akkor a folyamat végezetével 28 darab .deb fájlt találunk a /usr/local/src könyvtár alatt, melyeket a jól ismert "dpkg -i" paranccsal tudunk telepíteni.