bagneris.net


Passer proprement à python 2.5 sous debian

[ mardi 8 janvier 2008 - geekstuff, python]

Tout ce qui suit est risqué, sans garantie, et peut résulter en une installation défectueuse. Ne le faites pas sur une machine de production !

Update 14/01/2008 : de nombreux paquets ne "supportent" pas la manipulation décrite ci-dessous, le premier à me lacher a été sonata. Pour avoir une idée plus précise, voir ce mail de Josselin Mouette, et bien sûr la documentation de debian concernant Python.

Update 20/04/2008 : Python 2.5 est maintenant la version standard de la debian unstable.

Je ne sais pas pourquoi, il m'est venu subitement à l'idée que Python 2.4, ça suffit et que passer à 2.5 serait le bien.

Le problème est que Python 2.4 est la version par défaut de debian, même en unstable. Et que faire ça salement à grands coups de remplacement de libs, c'est l'idéal pour tout casser, vu tout ce qui dépend de python sur cette machine. Faisons donc proprement et commençons par installer python2.5 :)

$ sudo aptitude install python2.5

Ensuite, on va faire de 2.5 la version par défaut de la distribution. Tout d'abord, éditer /usr/share/python/debian_defaults :

[DEFAULT]
# the default python version
default-version = python2.5

# all supported python versions
supported-versions = python2.4, python2.5

# formerly supported python versions
old-versions = python2.3

# unsupported versions, including older versions
unsupported-versions = python2.3

Puis changer le lien symbolique /usr/bin/python pour qu'il pointe vers /usr/bin/python2.5. Enfin, ce n'est pas fini, il faut aussi :

$ sudo pycentral updatedefault python2.4 python2.5

Et là, ça va déjà un peu mieux :

$ ipython
Python 2.5.2a0 (r251:54863, Jan  3 2008, 17:59:56)
Type "copyright", "credits" or "license" for more information.

IPython 0.8.1 -- An enhanced Interactive Python.
?       -> Introduction to IPython's features.
%magic  -> Information about IPython's 'magic' % functions.
help    -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.

In [1]:

Mais ce n'est pas tout, il y a encore le modpython de apache2 qui est en 2.4. Pour le changer, il faut reconstruire le paquet libapache2-mod-python. En effet, la nouvelle version par défaut sera détectée à la compilation, et le paquet sera construit avec Python 2.5. Ma première tentative s'est soldée par une erreur due à un nombre important de paquets de développement manquants. Qu'à cela ne tienne, installons, on fera le ménage après :

$ sudo aptitude install autoconf python-dev python2.5-dev apache2-threaded-dev
$ cd /usr/local/src
$ sudo apt-get -b source libapache2-mod-python

Tout ça nous fait un beau petit paquet .deb bien propre. Installation :

$ sudo dpkg -i libapache2-mod-python_3.3.1-3_i386.deb

Et là c'est le drame, il refuse de s'installer parce qu'il dépend du paquet python en version 2.5, qui n'existe pas... Oui mais bon, pas d'inquiétude, Python 2.5 est installé correctement et est bien la version par défaut, donc on va forcer un peu la main de dpkg :

$ sudo dpkg -i --force-depends-version libapache2-mod-python_3.3.1-3_i386.deb

Roulement de tambour, suspense...

$ sudo /etc/init.d/apache2 restart
$ tail /var/log/apache2/error.log
[Tue Jan 08 14:25:14 2008] [notice] caught SIGWINCH, shutting down gracefully
[Tue Jan 08 14:25:18 2008] [notice] mod_python: Creating 8 session mutexes based
on 6 max processes and 25 max threads.
[Tue Jan 08 14:25:18 2008] [notice] mod_python: using mutex_directory /tmp
[Tue Jan 08 14:25:18 2008] [notice] Apache/2.2.6 (Debian) mod_python/3.3.1
Python/2.5.2a0 configured -- resuming normal operations

Voilà, on peut faire le ménage et passer à autre chose.

Note : ne supprimez pas le paquet python2.4. Il y a fort à parier qu'un nombre important de paquets de votre installation dépende encore de cette version.

Promouvoir et soutenir le logiciel libre

Tags

En cours

Le vaisseau ardent - Jean-Claude Marguerite

Le vaisseau ardent
Jean-Claude Marguerite


A Django site.