edix_developpeur_gentoo_majeur(7f) edix_developpeur_gentoo_majeur(7f)

edix_developpeur_gentoo_majeur - Modification majeure (par un développeur) des logiciels administrés via gentoo

La page de manuel edix_developpeur_gentoo(7f) décrit les deux types de mise à jour gentoo qui existent. Nous nous intéressons ici à la seconde, dite "majeure" car elle implique un changement de la base de donnée des paquets gentoo et une recompilation de l'ensemble du système.

On admet que le développeur a le nom d'utilisateur lamenaire sur une machine linux où il a chrooté l'image de référence et s'est connecté en tant que lafrier sur cette image (voir edix_developpeurs(7f)).

La procédure décrite ci-dessous ne fonctionnera jamais sans ajustement. Il est ici question de ce que la gestion d'un système d'exploitation a de plus délicat, notamment en termes d'interdépendance de chacune des briques logicielles du système. Vous recontrerez des problèmes de conflit qu'il faudra régler de façon ad-hoc à l'aide des ressources proposées par la communauté gentoo.

On passe sur le chroot en tant que lafrier et on commence par faire une mise à jour usuelle, comme le ferait l'administrateur d'une machine clone.

Voir edix_mise_a_jour(7f).

Aller dans /home/lafrier/edix/configuration.txt et mettre des "no" devant toutes les options de configuration :

lafrier:~ $ vim /home/lafrier/edix/configuration.txt
vim:

nolatex
nomath
nobureautique
noblob_office
nolaplace
noportable
nosyrthes
novirtuel

Puis relancer une mise à jour gentoo mineure :

lafrier:~ $ doas mise_a_jour_systeme_gentoo.sh

Enfin, stabiliser python avec

lafrier:~ $ doas emerge -1vUD @world

Le fait de réduire la configuration au minimum permettra que les premiers essais de compilation, suite à la mise à jour de la base de donnée des paquets gentoo, ne portent que sur un nombre minimum de paquets.

RQ: Dans les étapes de compilation suivantes, si vous observez que cela ne suffit pas, c'est à dire que certains conflits dans les paquets empêchent la compilation et que vous ne parvenez pas à les résoudre, alors vous pourrez ouvrir le fichier /var/lib/portage/world et commenter les paquets qui vous semblent les moins prioritaires jusqu'à obtenir une compilation sans conflit.

lafrier:~ $ doas emerge --sync

Si c'était le cas, il s'agirait de

lafrier:~ $ doas emerge -1vUD @world

RQ : La dernière tentative n'a pas fonctionnée

lafrier:~ $ doas emerge -av --oneshot sys-apps/portage

lafrier:~ $ doas mise_a_jour_systeme_gentoo.sh

Puis dans le fichier /home/lafrier/edix/configuration.txt, on rajoute graduellement toutes les possibilités de configuration, par exemple on remplace nolatex par latex et on relance mise_a_jour_systeme_gentoo.sh. Si tout se passe bien, on remplace nomath par math et on recommence, etc.

Si tout se passe bien, à la fin toutes les options de configuration sont sélectionnées :

lafrier:~ $ vim /home/lafrier/edix/configuration.txt
vim:

latex
math
bureautique
blob_office
laplace
portable
syrthes
virtuel

et on fait la mise à jour gentoo finale :

lafrier:~ $ doas mise_a_jour_systeme_gentoo.sh

Cela permet de vérifier que toutes les options sont opérationnelles (s'assurer qu'il n'y a pas de conflit et que la compilation se passe bien) et cela construit une base de donnée binaire complète.

RQ : Vous pouvez rencontrer un problème de place disque (no space left on device). Dans ce cas vous pouvez tenter la commande de nettoyage de la section suivante et recommencer.

Toujours sur le chroot de l'image, commencer par nettoyer perl,

lafrier:~ $ doas perl-cleaner --all

puis nettoyer les fichiers associés à la distribution gentoo :

lafrier:~ $ doas "${EDIX}"/bin_developpeur/reduction_du_systeme.sh

Ce script lance les commandes suivantes :


eclean-dist --deep
eclean-pkg --deep
/bin/rm -rf /var/tmp/portage/sys-*

A ce stade, tout a été mis à jour sur l'image, pour toutes les configurations disponibles. Cela signifie

  • une nouvelle base de donnée de paquets gentoo (/var/db/repos/gentoo) ;
  • un nouveau jeu de paquets binaires (/var/cache/binpkgs).

Il faut alors déployer ces nouvelles données sur le serveur, mettre à jour les fichiers de version sur edix, puis retourner sur l'image pour mettre à jour edix.

On laisse le chroot ouvert et on passe sur la machine hôte, depuis laquelle on lance les commandes suivantes qui extraient les répertoires concernés, ainsi que les fichiers de version.

Pour /var/db/repos/gentoo :

lamenaire:~ $ cd "${EDIXDEVELOPPEUR}"/bin_developpeur
lamenaire:~/edix/bin_developpeur $ doas ./hors_du_chroot_recopie_et_compression_de_var_db_repos_gentoo.sh /tmp
lamenaire:~ $ doas chown lamenaire:lamenaire /tmp/var_db_repos_gentoo.tar.gz
lamenaire:~ $ doas chown lamenaire:lamenaire /tmp/version_var_db_repos_gentoo.txt
lamenaire:~ $ rsync -av --delete -e ssh              \

--rsync-path=/usr/bin/rsync \
/tmp/var_db_repos_gentoo.tar.gz \
nastar:/nastar/www/Edix/var_db_repos_gentoo.tar.gz lamenaire:~ $ rsync -av --delete -e ssh \
--rsync-path=/usr/bin/rsync \
/tmp/version_var_db_repos_gentoo.txt \
nastar:/nastar/www/Edix/version_var_db_repos_gentoo.txt

Pour /var/cache/binpkgs :

lamenaire:~ $ cd "${EDIXDEVELOPPEUR}"/bin_developpeur
lamenaire:~/edix/bin_developpeur $ doas ./hors_du_chroot_recopie_et_compression_de_var_cache_binpkgs.sh /tmp
lamenaire:~ $ doas chown lamenaire:lamenaire /tmp/var_cache_binpkgs.tar.gz
lamenaire:~ $ doas chown lamenaire:lamenaire /tmp/version_var_cache_binpkgs.txt
lamenaire:~ $ rsync -av --delete -e ssh            \

--rsync-path=/usr/bin/rsync \
/tmp/var_cache_binpkgs.tar.gz \
nastar:/nastar/www/Edix/var_cache_binpkgs.tar.gz lamenaire:~ $ rsync -av --delete -e ssh \
--rsync-path=/usr/bin/rsync \
/tmp/version_var_cache_binpkgs.txt \
nastar:/nastar/www/Edix/version_var_cache_binpkgs.txt

Enfin, on recopie les fichiers de version sur le projet edix,

lamenaire:~ $ cp /tmp/version_var_db_repos_gentoo.txt ${EDIXDEVELOPPEUR}/reference/gentoo/.
lamenaire:~ $ cp /tmp/version_var_cache_binpkgs.txt ${EDIXDEVELOPPEUR}/reference/gentoo/.

et bien sûr on commite et on pousse le projet edix de façon à ce que cette évolution soit validée lorsque les administrateurs des machines edix feront leurs mises à jour.

Enfin, on repasse sur le chroot de l'image, on met à jour edix et on ferme le chroot :

lafrier:~ $ mise_a_jour_edix.sh
lafrier:~ $ exit

On choisit les options de configuration que l'on souhaite retenir pour l'image que l'on distribue sur le web, celle qui sera utilisée par les personnes souhaitant tester edix en bootant sur une clé usb, ou qui souhaiteront installer edix.

Typiquement,

lafrier:~ $ vim /home/lafrier/edix/configuration.txt
vim:

latex
math
bureautique
noblob_office
nolaplace
noportable
nosyrthes
novirtuel

et on fait la mise à jour gentoo pour une image de référence :

lafrier:~ $ doas mise_a_jour_systeme_gentoo.sh

edix_developpeur(7f), edix_developpeur_gentoo(7f), edix_mise_a_jour(7f)

2026-06-10 UNIX