====== 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