Bonjour
,
Aujourd'hui est un autre grand jour dans l'histoire de Logram, et de son gestionnaire de paquets Setup. Aujourd'hui, les efforts de plusieurs semaines se concrétisent enfin.
À partir de maintenant, Setup est en effet capable de supprimer des paquets, mais pas seulement. Il propose aussi un système pour se tenir à jour, système très soupple, pouvant s'utiliser à plusieurs niveaux :
Je suis d'ailleurs pas mal satisfait de la mise à jour qui est parfaitement propre
. Les fichiers présents dans l'ancienne version, mais plus dans la nouvelle, sont supprimés. Les dossiers laissés vides sont supprimés aussi, etc.
Je me suis fait plaisir, et vous ait concocté une quantité impressionnante de screenshots. Pas mal de fonctionnalités de Setup sont montrées dedans, des fonctionnalités qui ont pris plusieurs mois à développer, séparément, et qui s'assemblent aujourd'hui pour former le système de mise à jour
.
Pour accueillir les informations nécessaires à la mise à jour, l'affichage de Setup a été quelque peu relifté. Le résultat est encore plus clair que ce que je pensais, et montre tout ce que la console peut offrir :

La commande «setup upgrade» permet de trouver tous les paquets installés qui peuvent être mis à jour. Elle est relativement rapide, bien que pas trop trop optimisée (enfin si, mais intelligemment, voir «explications»).
explications : la manière «semi-intelligente» de faire aurait été de lire le fichier qui contient le nom des paquets installés. J'y ai pensé au début, et ça parraît optimisé. Problème, ce sont les noms qui y sont enregistrés, pas les ID de la BDD. Il faudrait alors, pour chaque paquet, explorer la base de donnée et faire une recherche sur les nom. Complexité O(nombre de paquets dans la BDD x nombre de paquets installés), non-merci
. La solution retenue est de faire un grand for() sur la base de donnée, explorer chaque paquet, et voir si leur statut est PACKAGE_STATE_INSTALLED. Si oui, il est installé. C'est une complexité O(nombre de paquets dans la BDD), donc indépendant de ce qu'on installe. C'est également une comparaison d'entiers, et non de chaine de caractère
. Résultat, la recherche de mise à jour sur les 28 000 paquets d'Ubuntu prend moins de 100 ms :D

Un simple «setup add» permet également de gérer les paquets et de les mettre à jour. Le screenshot suivant introduit également le support de la suppression, et vous voyez que le solveur est très intelligent.
En effet, on veut passer le paquet «libinitng» de la version A à la version B. Problème, «initng» dépend de «libinitng» obligatoirement à la version A, qui sera supprimée. Solutions : soit on supprime «initng», soit on met «initng» à jour vers la version B également (version B qui dépend de «libinitng» à la version B)

D'autres améliorations ont été apportées. Tout d'abord, ça marche
. En voici une petite preuve (je ne vais pas vous passer un accès SSH sur mon ordi pour tester non-plus
). Vous pouvez toujours tester vous-même pour voir que ça marche, et rapporter les éventuels bugs.

Un paquet supprimé est enregistré dans la BDD comme tel. Ainsi, toutes les actions sont traçables. Le «purge» efface complètement un paquet, y compris sa trace dans la BDD.

Le purge est supporté, et affiché dans une belle couleur. Il s'utilise d'une manière spéciale à partir de la ligne de commande («paquet» = installer, «-paquet» = supprimer, «+paquet» = purger). J'avais pensé utiliser le "!" comme préfixe de purge, mais bash le prend mal
.

Voilà, une bonne chose de faite. Les deltas ne sont pas encore gérés, bien qu'ils le soient du côté de repoma (gestion des dépôts), au moyen de bsdiff
.
| Author | Message |
|---|