Vous êtes ici : Accueil / 2012 / Juin / Utiliser Python 2.3 et 2.4 sur des Debian récentes

Utiliser Python 2.3 et 2.4 sur des Debian récentes

écrit le 08/06/2012 Par Gaël Le Mignot
Bien que ces versions de Python soient obsolètes, il est parfois nécessaire de les utiliser. Cet article explique comment nous nous y sommes pris.

Introduction

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.

Compiler des paquets Debian

Objectif

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.

Mode d'emploi

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 :

  • des paquets de support générique de Python, comme python-defaults ;
  • des paquets spécifiques pour chaque version de Python, comme python2.6.

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.

Les paquets de debug

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.

Les paquets d'extension

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 :

  1. Le paquet est en Python pur, et n'indique aucune restriction au niveau des versions de Python. Dans ce cas, grâce aux modifications que nous avons faites sur python-defaults, lorsque nous installerons le paquet, il sera automatiquement disponible pour toutes les versions installées, y compris notre 2.4.
  2. Le paquet est en Python pur, mais indique une restriction de version. Par exemple, XS-Python-Version: >= 2.5. Dans ce cas, il va falloir s'assurer que le paquet peut fonctionner (même en mode dégradé) avec notre version de Python cible, éventuellement en prenant une version plus ancienne du paquet.
  3. Le paquet contient du C (ou tout autre langage compilé). Dans ce cas, il faudra impérativement recompiler le paquet pour notre version de Python.

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.

Le repository Pilot

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 -

Précautions

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