News - Logiciels Libres

Gentoo : Migration vers le profile 23

| | Logiciels Libres | 1 Commentaire | 907
Gentoo : Migration vers le profile 23
Bonjour à tous,

Depuis le 22 mars 2024, il est possible de basculer du profile 17.1 vers 23.0 de Gentoo.
Les nouveaux profils 23.0 activent par défaut certaines fonctionnalités de durcissement de la chaîne d'outils et d'amélioration des performances, et normalisent les paramètres.
Pour plus d'infos, vous pouvez aller voir cette page : https://www.gentoo.org/support/news-items/2024-03-22-new-23-profiles.html

Les profiles 17.0, 17.1, 20.0 et 22.0 seront marqués comme obsolètes courant mai 2024 et supprimés un an plus tard.
Il est donc nécessaire de faire la transition dès maintenant.

Voici la procédure de mise à niveau du profil pas à pas.

Avant toute chose, vérifiez que vous avez bien des backups de votre système. Ceci n'est qu'un rappel, cela doit être fait régulièrement :)

Etape 1 :
- Vérifiez que le système est complètement à jour comme habituellement.
- Vérifiez que glibc soit plus récent que 2.36 ou que musl plus récent que 1.2.4 (suivant ce que vous utilisez)

Etape 2 :
- Si vous utilisez un profil obsolète depuis longtemps (le 17.0 par exemple), faites d'abord la transition vers la 17.1 avant de passer en 23.0)

Etape 3 :
- Si vous utilisez actuellement systemd dans une configuration split-usr, vous devez d'abord terminer la migration vers le profil merged-usr correspondant de la même même version de profil avant : https://www.gentoo.org/support/news-items/2022-12-01-systemd-usrmerge.html
- Si vous utilisez actuellement openrc, migrez d'abord vers la version 23.0, en conservant l'agencement. Si vous voulez passer de split-usr à merged-usr, faites-le après.

Etape 4 :
- Lancez emerge --info et notez la valeur de CHOST (par exemple CHOST="x86_64-pc-linux-gnu")

Etape 5 :
- Si la variable CHOST a été définie dans /etc/portage/make.conf retirez-la.

Etape 6 :
- Repérez le profile utilisé : eselect profile list (par exemple default/linux/amd64/17.1)
- Sélectionnez le profile 23.0 correspondant à votre profil actuel.
Les profils 17.1 étaient par défaut split-usr. Les profils 23.0 sont par défaut merged-usr.
Ne changez pas votre arborescence maintenant. Restez dans le même schéma
Plus d'infos ici : https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_update_table

Sur mon système, OpenRC, j'ai : default/linux/amd64/17.1
Je vais donc basculer sur : default/linux/amd64/23.0/split-usr

Etape 7 :
- Supprimez le contenu du cache des paquets binaires si vous les utilisez : rm -r /var/cache/binpkgs/*

Etape 8 :
- Si vous utilisez des paquets binaires, dans le fichier ou le dossier /etc/portage/binrepos.conf, mettez à jour l'URI du profile binaire : https://wiki.gentoo.org/wiki/Project:Toolchain/23.0_update_table

Etape 9 :
- Recompilez binutils dans la même version : emerge --ask --oneshot sys-devel/binutils (2mn25 sur dual core)
- Rejouez la configuration des binutils avec binutils-config -l puis binutils-config 1
- Recompilez gcc (sans recompiler glibc !!) : emerge --ask --oneshot sys-devel/gcc --nodeps (1h40 sur dual core)
- Rejouez la configuration des gcc avec gcc-config -l puis gcc-config 1
- Recompilez glibc : emerge --ask --oneshot sys-libs/glibc (20mn sur dual core) ou musl suivant votre cas : emerge --ask --oneshot sys-libs/musl

Etape 10 :
- Relancez emerge --info pour vérifier si la variable CHOST a changé par rapport à l'étape 4
Si la valeur n'a pas changé, passez à l'étape 13 directement

Etape 11 :
- Revérifiez avec binutils-config and gcc-config si les versions sont les bonnes

Etape 12 :
- Vérifiez dans /etc/env.d, /etc/env.d/binutils, et /etc/env.d/gcc s'il n'y a pas de fichiers se référant à la variable CHOST

Etape 13 :
- Rechargez l'environnement avec env-update && source /etc/profile

Etape 14 :
- Réémergez libtool : emerge --ask --oneshot libtool (37 secondes sur dual core)

Etape 15 :
- Supprimez à nouveau par sécurité le contenu du cache des paquets binaires si vous les utilisez : rm -r /var/cache/binpkgs/*

Etape 16 :
- Recompilez TOUT votre système : emerge --ask --emptytree @world
- Cela peut prendre énormément de temps... suivant ce que vous avez installé

Evidemment, rebootez :)

Note : 17h30minutes le réémerge du @world (1411 paquets) sur le AMD Ryzen 5 2600X :)