Contexte
CentOS 6.9 est livré avec Python 2.6.6 par défaut. Cette version du système d'exploitation a atteint sa fin de vie (EOL) en 2020, et les outils d'automatisation modernes comme Ansible 2.9+ nécessitent au minimum Python 2.7. L'installation via les Collecsions de Logiicels (SCL) est donc requise.
Réparation préventive de la base de données RPM
Cette étape évite l'erreur DB_RUNRECOVERY: Fatal error durant l'installation.
# Suppression des fichiers de base de données corrompus
rm -f /var/lib/rpm/__db.00*
# Reconstruction de la base de données
rpm --rebuilddb
# Nettoyage des caches yum
yum clean all
Configuration du dépôt SCL
Les dépôts officiels étant indisponibles, le fichier de configuration SCL doit être installé puis modifié pour pointer vers un miroir d'archive.
# Installation du paquet de configuration SCL
yum install -y centos-release-scl
# Suppression des fichiers de configuration par défaut défectueux
rm -f /etc/yum.repos.d/CentOS-SCLo-scl*.repo
Pointage vers les miroirs d'archive Vault
Création manuelle des fichiers de dépôt utilisant les archives Vault d'Aliyun.
cat <<repo_eof> /etc/yum.repos.d/CentOS-SCLo-scl.repo
[centos-sclo-sclo]
name=CentOS-6.10 - SCLo sclo (Archive)
baseurl=http://mirrors.aliyun.com/centos-vault/6.10/sclo/x86_64/sclo/
gpgcheck=0
enabled=1
REPO_EOF
cat <<repo_eof> /etc/yum.repos.d/CentOS-SCLo-scl-rh.repo
[centos-sclo-rh]
name=CentOS-6.10 - SCLo rh (Archive)
baseurl=http://mirrors.aliyun.com/centos-vault/6.10/sclo/x86_64/rh/
gpgcheck=0
enabled=1
REPO_EOF</repo_eof></repo_eof>
Installation et vérification de Python 2.7
# Mise à jour des métadonnées et installation du paquet
yum clean all
yum makecache
yum install -y python27
# Ajout des bibliothèques Python 2.7 au linker dynamique
echo "/opt/rh/python27/root/usr/lib64" > /etc/ld.so.conf.d/python27-opt-rh.conf
ldconfig
# Vérification de la version installée (chemin par défaut SCL)
/opt/rh/python27/root/usr/bin/python --version
Configuration d'Ansible pour l'inventaire
Ansible doit être informé du chemin vers l'interpréteur Python 2.7 spécifiquement installé pour cet hôte.
Dans un fichier d'inventaire au format INI
votre_serveur_ip ansible_python_interpreter=/opt/rh/python27/root/usr/bin/python
Dans un fichier d'inventaire au format YAML
votre_serveur_ip:
ansible_python_interpreter: /opt/rh/python27/root/usr/bin/python
Points importants
- Ne pas modifier Python système : L'interpréteur
/usr/bin/pythonne doit pas être remplacé, caryumen dépend directement. - Source alternative : En cas de problème avec le miroir Aliyun, l'URL de base peut être remplacée par
https://vault.centos.org/6.10/sclo/x86_64/.... - Activation de l'environnement : Pour utiliser Python 2.7 dans un shell courant, exécuter :
scl enable python27 bash.