Table des matières

Installer php 5.2 sur une debian squeeze

(avec mysql 5.0 et apache2 from lenny)

Ayant passé mon environnement de bureau en squeeze, j'ai eu besoin d'y installer les versions apache/mysql/php que j'ai en prod lenny. À priori rien de compliqué, sauf que je me suis pas mal pris la tête avec des pb de dépendances, sans trouver la soluce sur le web, d'où cette page…

Pinning

Pour commencer, on prépare nos préférences apt pour le “package pinning” (merci à http://www.keopx.net/programacion/instalacion-de-php-5-2-x-en-debian-testing-squeeze)

La liste des paquets à prendre prioritairement dans lenny, qu'on indique dans /etc/apt/preferences.d/amp

# aptitude -t lenny --disable-columns -F "%p" search ^apache2|tr '\n' ' '
Package: apache2 apache2-dbg apache2-dev apache2-doc apache2-mpm apache2-mpm-event apache2-mpm-itk apache2-mpm-prefork apache2-mpm-worker apache2-prefork-dev apache2-src apache2-suexec apache2-suexec-custom apache2-threaded-dev apache2-utils apache2.2-common
Pin: release a=lenny
Pin-Priority: 991

# aptitude -t lenny --disable-columns -F "%p" search ^libapache2|tr '\n' ' '
Package: libapache2-authcassimple-perl libapache2-authenntlm-perl libapache2-mod-apreq2 libapache2-mod-auth-kerb libapache2-mod-auth-mysql libapache2-mod-auth-openid libapache2-mod-auth-pam libapache2-mod-auth-pgsql libapache2-mod-auth-plain libapache2-mod-auth-radius libapache2-mod-auth-sys-group libapache2-mod-bw libapache2-mod-chroot libapache2-mod-defensible libapache2-mod-dnssd libapache2-mod-encoding libapache2-mod-evasive libapache2-mod-fastcgi libapache2-mod-fcgid libapache2-mod-geoip libapache2-mod-gnutls libapache2-mod-jk libapache2-mod-layout libapache2-mod-ldap-userdir libapache2-mod-line-edit libapache2-mod-lisp libapache2-mod-log-sql libapache2-mod-log-sql-dbi libapache2-mod-log-sql-mysql libapache2-mod-log-sql-ssl libapache2-mod-macro libapache2-mod-mime-xattr libapache2-mod-mono libapache2-mod-musicindex libapache2-mod-neko libapache2-mod-ocamlnet libapache2-mod-perl2 libapache2-mod-perl2-dev libapache2-mod-perl2-doc libapache2-mod-php5 libapache2-mod-php5filter libapache2-mod-proxy-html libapache2-mod-python libapache2-mod-python-doc libapache2-mod-python2.5 libapache2-mod-random libapache2-mod-removeip libapache2-mod-rpaf libapache2-mod-ruby libapache2-mod-scgi libapache2-mod-shib libapache2-mod-shib2 libapache2-mod-speedycgi libapache2-mod-suphp libapache2-mod-vhost-hash-alias libapache2-mod-vhost-ldap libapache2-mod-wsgi libapache2-redirtoservname libapache2-reload-perl libapache2-request-perl libapache2-svn libapache2-webauth libapache2-webkdc
Pin: release a=lenny
Pin-Priority: 991

# aptitude -t lenny --disable-columns -F "%p" search ^php5|tr '\n' ' ' 
Package: php5 php5-adodb php5-auth-pam php5-cgi php5-cli php5-common php5-curl php5-dbg php5-dev php5-ffmpeg php5-gd php5-geoip php5-gmp php5-gpib php5-idn php5-imagick php5-imap php5-interbase php5-json php5-lasso php5-ldap php5-librdf php5-mapscript php5-mcrypt php5-memcache php5-mhash php5-ming php5-mssql php5-mysql php5-odbc php5-pgsql php5-ps php5-pspell php5-radius php5-recode php5-sasl php5-snmp php5-sqlite php5-sqlrelay php5-suhosin php5-sybase php5-symfony php5-symfony1.0 php5-tidy php5-uuid php5-xapian php5-xcache php5-xdebug php5-xmlrpc php5-xsl
Pin: release a=lenny
Pin-Priority: 991

# aptitude -t lenny --disable-columns -F "%p" search ^mysql|tr '\n' ' ' 
Package: mysql-admin mysql-client mysql-client-5.0 mysql-common mysql-community-client-5.0 mysql-community-server-5.0 mysql-gui-tools-common mysql-navigator mysql-proxy mysql-query-browser mysql-server mysql-server-5.0 mysqltcl mysqltuner
Pin: release a=lenny
Pin-Priority: 991

# aptitude -t lenny --disable-columns -F "%p" search 'lib*mysql'|tr '\n' ' '
Package: libmysql++-dev libmysql++-doc libmysql++3 libmysql-cil-dev libmysql-java libmysql-ocaml libmysql-ocaml-dev libmysql-ocaml-dev-u0
Pin: release a=lenny
Pin-Priority: 991

# et qq php*
Package: phpmyadmin phppgadmin phpldapadmin
Pin: release a=lenny
Pin-Priority: 991

# et d'autres qui ont des dépendances communes avec notre trio amp
Package: subversion libsvn1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libonig2
Pin: release a=lenny
Pin-Priority: 991

Et notre sources.list lenny dans /etc/apt/sources.list.d/lenny.list

deb http://ftp.fr.debian.org/debian/ lenny main 
deb-src http://ftp.fr.debian.org/debian/ lenny main

Nettoyage squeeze et install

On a une dépendance assez pénible entre gnome et libapache2-mod-dnssd, qui nous bloque un apache2.2-bin de squeeze, on y va donc à la barbare en virant les meta-paquets gnome (mais pas toutes leurs dépendances) et ces résidus apache.

Attention, vous ne pourrez pas remettre ces meta-paquets ensuite (pb avec apache) ni gnome-user-share (qui doit je suppose gérer les partages réseau directement dans nautilus). Si c'est indispensable pour vous, faudra trouver une autre solution…

Idem pour subversion qui devra rester en 1.5 (from lenny)

Mais ensuite, toute tentative de réinstall de apache2/php5 bloque à cause de libkrb5-3 de squeeze qui casse libkrb53 (de lenny, qui vient avec apache/php), et virer libkrb5-3 n'est pas sérieusement envisageable tellement y'a de monde qui en dépend ! Après avoir tourné un moment, il suffit en fait de mettre libkrb53 de squeeze avant l'install apache/php de lenny.

# On vire ce qui gène aptitude
dpkg --force-depends -r gnome-user-share gnome gnome-desktop-environment libapache2-mod-dnssd apache2.2-bin

# On installe libkrb53 de squeeze
aptitude install libkrb53

# Chez moi, y'avait aussi subversion qui genait (on le remettra ensuite from lenny)
aptitude remove subversion

# On vérifie que l'on a pas de résidus de apache/php/mysql de squeeze avec
aptitude search apache~i php~i mysql~i

# On vire d'éventuelle trace de conf antérieures (backup si vous voulez garder des traces !)
rm -rf /etc/apache2 /etc/php5 /etc/mysql /var/log/apache2 /var/log/mysql 
# Attention avant de lancer ça, ça efface les bases ! (faire des dumps avant et virer, pour réinjecter ensuite, pour ne pas garder de scories 5.1 dans des bases qui seront ensuite powered by 5.0)
# rm -rf /var/lib/mysql

# Et on installe notre trio AMP, en plusieurs fois sinon on perd des petits au passage (Je sais pas pourquoi, mais je me suis retrouvé avec /etc/mysql/my.cnf et /etc/apache2/envvars qui manquaient)
aptitude install -t lenny mysql-client-5.0 mysql-server-5.0
aptitude install -t lenny apache2-mpm-prefork apache2.2-common
aptitude install -t lenny libapache2-mod-php5 apache2-suexec php5-cli php5-curl php5-gd php5-imagick php5-imap php5-mcrypt php5-mhash php5-mysql php5-sqlite php5-tidy php5-xsl
aptitude install -t lenny mysqltuner phpmyadmin

Remarque subversion

Le client subversion de squeeze (1.6) veut libaprutil1 qui casse notre apache2.2-common de lenny, donc si vous en avez besoin, faudra rester en 1.5 avec

apin -t lenny subversion