You are here -> Home Logram et son site » Installation, suppression et mise à jour

Installation, suppression et mise à jour

Le 3/12/2009 à 17h01 by steckdenis, in Logram et son site, 0 commentaries

Bonjour :D ,

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 :

  • Avec «setup upgrade», le mode «Assistant». Les paquets dont la mise à jour est sûre sont affichées. C'est à peu près seulement des mises à jour de correction de bugs qui sont affichées (un paquet mis à jour de cette manière ne change pas de dépôt, donc pas de migration vers experimental non voulue)
  • Avec «setup add», qui conciste à réinstaller le paquet. Réinstaller, oui, mais dans sa version la plus neuve.

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.

Les screenshots

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 :) .

Améliorations

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 :

NewInstall

L'assistant de mise à jour

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

NewUpdate

La méthode manuelle

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)

UpdateRemove

Autres

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 :p ). Vous pouvez toujours tester vous-même pour voir que ça marche, et rapporter les éventuels bugs.

Operations

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.

DeleteState

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 :-° .

Purge

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 :) .

Commentaries

Author Message