2.13 Révisions système

La liste des logiciels installés

Au fur et à mesure que vous installez des logiciels, un fichier système est formé, qui contient leur liste : /var/lib/portage/world. Cette liste n'est pas complète, car les dépendances des paquets installés (par exemple, les bibliothèques) n'y figurent pas.

Pour voir comment cela fonctionne, installons le tableur Gnumeric :

emerge -a gnumeric

La commande lancée, le gestionnaire de paquets vous suggérera probablement plusieurs paquets à installer : app-office/gnumeric lui-même, mais aussi gnome-extra/libgsf et x11-libs/goffice, dont le tableur a besoin pour fonctionner. Cependant seul le paquet que vous auriez spécifié en argument de "emerge"/main/en/emerge, app-office/gnumeric en l'occurence, sera porté sur le fichier world.

Maintenant, si vous supprimez Gnumeric :

emerge -C gnumeric

la paquet app-office/gnumeric ne figurera plus sur la liste world. Par contre, les paquets qui en dépendent resteront intacts.

Pour nettoyer ces dépendances, exécutez

emerge -ac

L'arborescence des paquets sera alors reconstruite à partir de la liste du fichier world plus les dépendances. Si le gestionnaire détecte des paquets orphelins, il vous proposera de les supprimer.

Gérer le fichier world avec les modèles

A partir de Calculate Linux 13, la gestion des paquets est devenue plus souple. Dans les versions précédentes, nous avons utilisé des méta-paquets pour construire l'arborescence des dépendances. Ce dispositif avait l'avantage d'assurer toutes les dépendances requises d'un bloc, tout en évitant le blocage de paquets en conflits, mais il présentait aussi des inconvénients. A chaque nouvelle version d'un méta-paquet, l'utilisateur redoutait des ajouts ou les suppressions forcées de logiciels. Par contre, dégager une application préinstallée n'était pas chose aisée.

Mais les Utilitaires Calculate ont beaucoup évolué depuis et peuvent désormais modifier le fichier world, ce qui nous a permis de renoncer aux méta-paquets. Lors de la synchronisation de l'arbre Portage et de l'overlay, contenant les templates, avec eix-sync, l'outil cl-core est lancé, qui, à son tour, traite les modèles.

Les modèles permettent de (re)définir les logiciels fournis par défaut compte tenu de toutes les modifications. En cas de remplacement, par exemple, le nouveau paquet écrasera celui qu'il remplace dans le fichier world.

La version actuelle du fichier world est consultable dans /etc/calculate/ini.env. Elle est notée comme suit :

[update]
world = 22

Les modèles qui gèrent la liste des paquets sont, pour l'instant, consultables à :

/var/lib/layman/calculate/profiles/templates/3.1/6_ac_update_sync/world/

Ces modèles se classent en deux grandes catégories :
  • ceux qui regénèrent le fichier world à partir de zéro ;
  • ceux qui mettent à jour le world courant, en supprimant, en remplaçant ou en ajoutant des paquets.

Les modèles sont également triés par fonction (à savoir graphics, network, multimedia...).

Chaque modèle décrit les règles de mise à niveau pour chaque version, comme suit :

# supprimer geeqie sur CLD
#?os_linux_shortname==CLD#
!media-gfx/geeqie
#os_linux_shortname#

# ajouter catfish sur CLDX
#?os_linux_shortname==CLDX#
dev-util/catfish
#os_linux_shortname#

# remplacer chromium avec firefox
#?pkg(www-client/chromium)!=#
www-client/firefox
#pkg#

Vous pouvez également utiliser la commande

cl-update --update-rev

pour mettre le fichier world à jour à la main.

Pour regénérer le fichier world sans prendre en compte les paquets installés, lancez :

cl-update --rebuild-world

Pour regénérer world en tenant compte du journal d'installation et non pas des paquets préinstallés :

regenworld

Révisions système

Avec les nouveaux dispositifs de génération du fichier world, les corrections ne sont plus validées comme avant, non plus. Dans les versions précédentes de CL, elles intervenaient pendant les mises à jour, donnant souvent du fil à retordre, vu que :
  • Des nouvelles révisions de paquets (généralement de méta-paquets) étaient proposées pour corriger lors d'une mise à niveau.
  • La réinstallation d'un méta-paquet terminée, les modèles étaient réappliqués pour apporter les corrections nécessaires.
  • Si la correction devait être effective avant la mise à jour d'un ou des paquets spécifiques, des révisions étaient créées pour ces paquets même si ceux-ci n'étaient aucunement impliqués.
  • Il était impossible de corriger un bogue avant de réinstaller le paquet défaillant.

Dans les nouvelles versions de Calculate, les bogues sont corrigés et les réglages modifiés avec la commande cl-udpate --update-rev. Elle est lancée automatiquement chaque fois que vous faites eix-sync et ne dépend d'aucun paquet.

Toutes les corrections sont contenues dans les modèles de révision, à 6_ac_update_sync/revision. Cela peut être un script à exécuter, mais aussi une liste de paquets à réajuster. Ces modifications ne sont valables que pour une révision bien précise.

Sur une Calculate Linux installée, le numéro de la révision système actuelle est stocké dans le fichier /etc/calculate/ini.env, pour éviter qu'une même modification soit validée à plusieurs reprises.

Un autre avantage de cette approche est que la mise à jour des postes de service et la création d'une image ISO obéissent à une même logique. Résultat, moins d'erreurs invisibles dans les stages hebdomadaires, mais révélées après une mise à jour malencontreuse.

Thank you!