Il est parfois nécessaire d'utiliser une version plus ancienne de Python. Par exemple pour remonter une ancienne application depuis une sauvegarde, ou temporairement afin d'effectuer une migration, ou encore parce qu'une application, trop complexe pour être portée dans un délai court, ne fonctionne qu'avec une version spécifique de Python.
Ce problème se pose d'autant plus dans le monde Zope/Plone, où une version de Plone dépend en général d'une version précise de Zope, qui dépend d'une version précise de Python, mais il n'est pas spécifique à ces technologies.
Il est bien sûr possible d'installer les Python directement, via le ./configure; make; make install. Mais ce mode de fonctionnement est très difficile à gérer, lorsqu'on a un parc de plusieurs centaines de machines virtuelles, en tout cas.
Nous avons donc dû créer des paquets Debian de ces différentes version de Python.
L'objectif est de prendre les paquets les plus récents qui ont existé avant que la version de Python ne soit abandonnée par Debian, et de les recompiler sur une Debian récente (par exemple, une squeeze). Cette étape se fait, bien sûr, sur une machine virtuelle dédiée à la compilation des paquets, qui pourront ensuite être déployés sur les machines virtuelles nécessitants cette version de Python.
Les paquets Debian de Python sont découpés entre deux groupes :
Afin d'avoir nos paquets de Python 2.4 (ou même 2.3) sur squeeze, il est nécessaire de recompiler une version spécifique de python-defaults, qui active le support de cette version de Python, nous verrons pourquoi par la suite.
Il faut ensuite recompiler le paquet spécifique à la version de Python, python2.4, par exemple.
Comme à chaque fois qu'on modifie un paquet, il faut penser à changer le numéro de version, dans notre cas, tous les cas sont postfixés avec un marqueur du type .pilot.1, et à ajouter une entrée dans le changelog.
Debian offre des paquets spécifiques, en -dbg, qui contiennent les symboles de debug des exécutables et bibliothèques. Ces paquets permettent d'utiliser des outils comme gdb pour localiser (et corriger) d'éventuels bugs dans Python ou ses extensions.
Nous avons rencontré quelques difficultés pour compiler ces paquets, mais comme nous n'en avions pas besoin, nous avons donc choisi de les désactiver.
Une fois le Python lui-même compilé, il faut s'occuper des paquets d'extension. Pour les paquets d'extension il y a trois cas possibles :
Il faut recommencer l'étape pour chaque paquet d'extension que nous souhaitons utiliser, ainsi que leurs dépendances (lorsqu'elles sont spécifiques à Python). C'est une tâche fastidieuse, mais en général pas difficile.
Nous avons effectué ces opérations pour Python 2.4 et Python 2.3. Les paquets, et les extensions que nous avons compilés, sont disponibles sur http://debian.pilotsystems.net . Vous pouvez ajouter les lignes suivantes dans le sources.list pour les utiliser (changez le 2.4 en 2.3 pour Python 2.3) :
deb http://debian.pilotsystems.net/debian/python2.4 squeeze pilot deb-src http://debian.pilotsystems.net/debian/python2.4 squeeze pilot
N'oubliez pas d'ajouter notre clé GnuPG aux clés reconnues par apt-get, si vous souhaitez les utiliser :
wget -O- http://debian.pilotsystems.net/key.asc | apt-key add -
Avant d'utiliser ces paquets, il est très important de noter que les versions 2.3 et 2.4 de Python ne sont plus supportées, ni par la Python Software Foundation, ni par Debian, ni par Pilot Systems. Les paquets sont fournis en l'état, sans aucune garantie, en particulier en ce qui concerne les mises à jour de sécurité. Il s'agit d'un dépannage pour les cas cités en introduction, non d'une solution parfaitement robuste.
Actions sur le document