8.52.1. Installation de Python 3
Préparez la compilation de Python :
./configure --prefix=/usr \
--enable-shared \
--with-system-expat \
--enable-optimizations
Voici la signification des options de
configuration :
-
--with-system-expat
-
Ce paramètre active la liaison avec la version du système de
Expat.
-
--enable-optimizations
-
Ce paramètre permet d’établir des étapes d’optimisation
approfondis, mais prenant beaucoup de temps. L’interprète est
construit deux fois ;les tests effectués pendant la
première construction sont utilisés pour concevoir la version
finale optimisée.
Compilez le paquet :
make
Certains test sont connus pour ne jamais s'arrêter. Pour tester les
résultats, exécutez la suite de tests mais indiquez une limite de 2
minutes pour chaque cas de test :
make test TESTOPTS="--timeout 120"
Pour un système relativement lent vous devriez augmenter la limite
de temps. 1 SBU (mesuré lors de la construction de Binutils
passe 1 avec un cœur de CPU) devrait suffire. Certains tests sont
instables, donc la suite de tests relancera automatiquement les
tests en échec. Si un test échoue mais réussi après une relance, il
devrait être considéré comme réussi.
Installez le paquet :
make install
À plusieurs reprises dans ce livre, on utilise la commande
pip3 pour installer
les programmes et les modules Python 3 pour chaque utilisateur
en tant que root
. Cela entre en
conflit avec les recommandations des développeurs de Python :
pour installer des paquets dans un environnement virtuel, ou dans
le répertoire home d’un utilisateur régulier (en exécutant
pip3 en tant que cet
utilisateur). Un avertissement multi-lignes s’affiche à chaque fois
que pip3 est détecté
par l’utilisateur root
.
La principale raison de cette recommandation est d’éviter les
conflits avec le paquet de gestion du système (dpkg, par exemple). Ce n’est pas
un problème, puisque LFS n’a pas de paquet de gestion s’appliquant
à l’intégralité du système. pip3 vérifiera également si une
nouvelle version est disponible dès qu’il sera exécuté. Étant donné
que la résolution du nom de domaine n’est pas encore configuré dans
l’environnement chroot de LFS, pip3 ne pourra pas procéder à la
recherche d’une mise à jour, et un message d’avertissement
s’affichera.
Après avoir lancé le système LFS et établi une connexion au réseau,
un nouvel avertissement apparaîtra, prévenant l’utilisateur de
mettre à jour pip3
d’après une roue de pré-construction su PyPI (dès qu’une nouvelle
version est disponible). LFS considère cependant pip3 comme faisant partie de
Python 3, il est donc conseillé de ne pas le mettre à jour
indépendamment. Une amélioration depuis une roue pré-construite
pourrait aussi nous faire dévier de l’objectif : construire un
système Linux sur un code source. L’avertissement à propos d’une
nouvelle version de pip3 peut donc lui aussi être
ignoré. Vous pouvez, si vous le désirez, désactiver tous ces
avertissements en activant la commande suivante, ce qui créera un
fichier de configuration :
cat > /etc/pip.conf << EOF
[global]
root-user-action = ignore
disable-pip-version-check = true
EOF
Important
Dans LFS et BLFS nous construisons et installons normalement les
modules Python avec la commande pip3. Remarquez bien que les
commandes pip3
install dans les deux livres doivent être lancées
en root
à moins qu'il s'agisse
d'un environnement virtuel Python. Exécuter pip3 install en tant
qu'utilisateur ou utilisatrice non root
peut sembler fonctionner, mais cela
rendra les modules installés indisponibles pour les autres.
pip3 install ne
réinstallera pas les modules déjà installés par défaut. Pour
utiliser la commande pip3
install pour mettre à jour un module (par
exemple, de meson-0.61.3 vers meson-0.62.0), ajoutez l'option
--upgrade
à la ligne de
commande. S'il est vraiment nécessaire de revenir à une version
précédente d'un module ou de réinstaller la même version, ajoutez
l'option --force-reinstall
--no-deps
à la ligne de commande.
Si vous le souhaitez, installez la documentation préformatée :
install -v -dm755 /usr/share/doc/python-3.12.5/html
tar --no-same-owner \
-xvf ../python-3.12.5-docs-html.tar.bz2
cp -R --no-preserve=mode python-3.12.5-docs-html/* \
/usr/share/doc/python-3.12.5/html
Voici la signification des commandes d'installation de la
documentation :
-
--no-same-owner
(tar) et --no-preserve=mode
(cp)
-
Garantit que les fichiers installés ont la bonne appartenance
et les bonnes permissions. Sans ces options, utiliser
tar installera les fichiers
du paquet avec les valeurs du créateur en amont et ils
auraient des permissions restrictives.