Journal CUDF, ou la résolution de dépendances universelle

Posté par (page perso) .
24
19
mai
2010
Lors du dernier FOSDEM, une conférence sur le sujet de la résolution des dépendances dans les distributions a été faite par Stefano Zacchiroli qui (rien à avoir) est devenu DPL Debian depuis.

La plupart des distributions se basent sur un ensemble de paquets (contenant logiciels, bibliothèques, et autres) liés entre eux par différents types de dépendances. Les formats de paquets les plus répandus sont les fichiers deb (Debian et dérivées), et rpm (Red Hat et dérivées). Les outils dpkg et rpm permettent de manipuler les paquets en local. La couche du dessus, qui contient des outils comme apt et yum, permet la résolution des dépendances. L'utilisateur peut donc choisir les paquets qu'il souhaite installer, et les dépendances sont résolues afin que les paquets nécessaires soient installés et que les éventuels paquets en conflit soient supprimés. L'outil de résolution des dépendances a pour seul but de répondre aux besoins de l'utilisateur sans enfreindre les règles de dépendances et de conflits définies. Éventuellement, cet outil peut répondre qu'il n'existe aucune solution au problème posé...

Dans les faits, il existe différents solveurs de dépendances différents entre les distributions, et même au sein de chaque distribution. Dans la plupart cas, il n'existe pas de bonne raison à cet état de fait. Seuls certains domaines spécifiques (par exemple, l'embarqué) peuvent nécessiter un algorithme de résolution différent. Lors de sa conférence intitulée "Cross-distro dependency resolution: reusing solvers among distros", Stefano Zacchiroli, développeur Debian, présente le travail réalisé dans le but de créer un format standard de description des problèmes de résolution de dépendances. Ceci a pour but de pouvoir abstraire ces derniers en omettant les spécificités de chaque distribution (par exemple, transformer les différents niveaux de liens entre les paquets dans Debian : Depends/Recommends/Suggests/Conflicts/Replaces/etc. et la notion de paquets virtuels), et donc de pouvoir travailler sur des solveurs performants et éventuellement utilisés largement par les différentes distributions, en évitant la duplication du travail.

Cette abstraction correspond au format CUDF, acronyme de Common Upgradability Description Format. Un fichier CUDF est un simple fichier texte basé sur la RFC 2822, listant des paquets (chacun ayant un certain nombre de propriétés), le tout organisé en 3 sections :
  • l'univers des paquets, c'est-à-dire la liste des paquets disponibles dans les dépôts
  • les paquets installés
  • la requête de l'utilisateur
Un document contenant les spécifications complètes est disponible, mais pour commencer il est suffisant de lire CUDF Primer. Ce format est implémenté dans la libCUDF, également disponible sur le site du projet CUDF. Il existe un format spécifique pour Debian, Debian CUDF, qui abstrait moins de choses que le format CUDF, et qui trouve son utilité dans le travail d'uniformisation des solveurs au sein de la distribution Debian.

Enfin, l'équipe derrière CUDF souhaite collecter des données auprès des utilisateurs de systèmes de paquets afin de constituer une base de cas d'utilisation réels sur les problèmes de résolution de dépendances. De plus, une compétition sera organisée entre les différents algorithmes de résolution proposés.

Tout ce travail, même s'il peut sembler actuellement abstrait, pourrait permettre à terme d'améliorer les systèmes de paquets dans les distributions.
  • # Merci

    Posté par (page perso) . Évalué à 7.

    Trés intéressant !

    Dans le monde du logiciel libre, si tous les efforts pouvait être réunis, que pourrait-on demander de plus ?

    Espérons que le travail de Stefano soit vu et reconnu...
  • # Et mon troll alors???

    Posté par . Évalué à 10.

    Si tout le monde se met à unifier ses résolutions de dépendances, qu'est-ce que je fais de mon troll "deb éclate la race à sa mère à rpm!"??

    Il va se retrouver tout seul, orphelin, abandonné.
    Il va finir par se droguer et mendier dans les rues.

    Soutenez le troll: faites un don à l'Association pour la Sauvegarde de l'Hétérogénéité des Résolutions de Dépendances!
    • [^] # Re: Et mon troll alors???

      Posté par (page perso) . Évalué à 7.

      Tu pourras toujours t'attaquer au système propriétaire et leur système de package qu'ils n'ont pas...

      C'est quoi déjà l'adresse pour le don ?
    • [^] # Re: Et mon troll alors???

      Posté par (page perso) . Évalué à 9.

      Il se saoulera avec les trolls "RPM rétame DEB mais lui laisse quelques dents par générosité" et "RPM et DEB c'est dépassé, utilisez yaourt !"
    • [^] # Re: Et mon troll alors???

      Posté par . Évalué à 6.

      Remarque, ce n'est pas comme si la création d'un format universel pour le codage des caractères avait stoppé les trolls. Mieux, elle en a créé tout plein !

      Longue vie aux trolls poilus.
    • [^] # Re: Et mon troll alors???

      Posté par (page perso) . Évalué à 3.

      Tu pourras troller sur la lenteur de RPM, ça n'a pas de rapport avec la résolution des dépendances je crois.
  • # Vers un format unifié?

    Posté par . Évalué à 7.

    À part les dépendances, y-a-t-il d'autres différences fondamentales (et donc apparemment insurmontables) entre RPM et DEB?

    Ou dit autrement: devrait-on avoir un seul format unifié dans les années à venir?

    (Attention: je n'ai pas dit des paquets compatibles entre distros, je parle juste du format hein!).

    Ça veut dire que RedHat & autres, OpenSuse et Mandriva vont enfin avoir un format de paquets digne de ce nom?
    Ah zuuuuuuuuuuut! Pas pu tenir jusque vendredi, j'ai mis les deux pieds dedans...
    • [^] # Re: Vers un format unifié?

      Posté par . Évalué à 10.

      tu veux dire que toutes ces distro vieillissantes pourraient venir au PKGBUILD pour la génération simplifiée de paquets de type pkg.tar.xz ? Bonne idée, après, il ne restera plus qu'à Debien et ses dérivées de sauter le pas !

      Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

      • [^] # Re: Vers un format unifié?

        Posté par (page perso) . Évalué à 3.

        Je connais mal les formats de paquets, mais il me semble que les PKGBUILD n'ont pas toutes les subtilités des autres telles que: Depends/Recommends/Suggests/Conflicts/Replaces/ etc. et la notion de paquets virtuels. Autant pour un ordinateur personnel on peut facilement s'en passer, autant pour un serveur¹ ou l'embarqué ça peut-être plus gênant.

        Maintenant, je ne suis pas du tout dans le domaine, c'est juste une impression.

        ¹: Quand je dis serveur, je parle d'un vrai serveur avec de la charge et des contraintes de production pas un serveur qui fait tourner blog qui peut redémarrer 4 fois par jour et être indisponible 2/7 jours.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

        • [^] # Re: Vers un format unifié?

          Posté par (page perso) . Évalué à 6.

          >les PKGBUILD n'ont pas toutes les subtilités des autres telles que:
          >Depends/Recommends/Suggests/Conflicts/Replaces/ etc.

          provides=
          depends=
          makedepends=
          conflicts=
          replaces=

          Donc à part le recommends/suggests de dpkg... Mais quand tu vois que maintenant, recommends est appliqué par défaut sous Debian/Ubuntu, je vois plus trop à quoi ça sert...

          >et la notion de paquets virtuels.

          Dans un PKGBUILD, tu as la notion de groupes:

          # pacman -S kdenetwork
          le paquet kdenetwork est introuvable, recherche du groupe...
          :: groupe kdenetwork (inclut les paquets ignorés):
          kdenetwork-filesharing kdenetwork-kdnssd kdenetwork-kget kdenetwork-kopete kdenetwork-kppp kdenetwork-krdc
          kdenetwork-krfb
          :: Installer tout le contenu ? [O/n]
          • [^] # Re: Vers un format unifié?

            Posté par (page perso) . Évalué à 2.

            Mais quand tu vois que maintenant, recommends est appliqué par défaut sous Debian/Ubuntu, je vois plus trop à quoi ça sert...

            Tu peux passer l'option --no-recommends (ou un truc semblable) si tu ne les veux pas. Et je dis bien que pour le desktop, il n'y a sans doute pas d'intérêt.

            « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

            • [^] # Re: Vers un format unifié?

              Posté par (page perso) . Évalué à 2.

              par défaut

              Je savais qu'il fallait le mettre en gras :( Je savais qu'on allait me faire la réflexion :(

              Sinon, tu peux mettre APT::Install-Recommends false; dans un fichier de conf apt, sur un serveur c'est mieux (TM)
              • [^] # Re: Vers un format unifié?

                Posté par (page perso) . Évalué à 2.

                Je l'avais bien vu mais tu demandes à quoi ça sert, je te montre que tu peux l'utiliser quand même, si en plus tu le sais, ça ne servait à rien de poser la question :)

                « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

                • [^] # Re: Vers un format unifié?

                  Posté par (page perso) . Évalué à 2.

                  >Je l'avais bien vu mais tu demandes à quoi ça sert

                  Je demande pas à quoi ca sert, j'ai dit: "Je ne vois plus à quoi ca sert"

                  Ce qui veut bien dire que je voyais mais que je trouve le nouveau comportement stupide ;)
            • [^] # Re: Vers un format unifié?

              Posté par . Évalué à 4.

              Et je dis bien que pour le desktop, il n'y a sans doute pas d'intérêt.

              Ho que si! Ça évite d'avoir Samba quand tu veux Abiword.

              THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.

          • [^] # Re: Vers un format unifié?

            Posté par (page perso) . Évalué à 5.

            > Donc à part le recommends/suggests de dpkg...

            Il y a optdepends, qui permet de dire "si tu veux la fonctionnalité X, installe le paquet Y" (comme suggests, quoi)
          • [^] # Re: Vers un format unifié?

            Posté par (page perso) . Évalué à 4.

            Donc à part le recommends/suggests de dpkg... Mais quand tu vois que maintenant, recommends est appliqué par défaut sous Debian/Ubuntu, je vois plus trop à quoi ça sert...

            Il y a une subtilité entre Depends et Recommends. Les dépendances sont nécessaires pour faire fonctionner le logiciel, tu ne peux donc pas les désinstaller sans désinstaller le paquet lui même. Les recommandations sont les paquets qu'on trouve pour une install « typique » du paquet donné. Tu peux les supprimer tout en gardant le paquet fonctionnel.
            C'est pour cela que la configuration d'APT est maintenant d'installer les Recommends par défaut.
        • [^] # Re: Vers un format unifié?

          Posté par (page perso) . Évalué à 2.

          Avec mes dernières connaissances sur le sujet (qui dates de 1/2 ans quand même), un PKGBUILD ne permet pas de spécifier plusieurs paquets binaires pour un seul paquet source.
    • [^] # Re: Vers un format unifié?

      Posté par (page perso) . Évalué à 3.

      À part les dépendances, y-a-t-il d'autres différences fondamentales (et donc apparemment insurmontables) entre RPM et DEB?

      RPM c'est un format spécifique avec deux versions officielles (rpm.org et rpm5.org). DEB c'est un format utilisable sans les outils Debian (cpio et tar).
      Donc s'il faut choisir un format unique, DEB est mon choix.

      "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

      • [^] # Re: Vers un format unifié?

        Posté par (page perso) . Évalué à 6.

        RPM est surtout le format de Linux Standard Base et rien que pour ça il est plus intéressant.
        A part ça, y'a pas vraiment de supériorité entre les formats RPM et DEB, bien que certains voudraient le faire croire, c'est plutôt (beaucoup) des questions d'égo...
        • [^] # Re: Vers un format unifié?

          Posté par . Évalué à 4.

          Avec peut être une petite histoire d'origine, sur la couche au dessus d'un côté et l'absence de couche au dessus d'un autre. Il y a qq années quant t'étais obligé de te coltiner rpm seul sur des serveurs au boulot... Forcément en rentrant chez toi et retrouvant une Debian, c'était plus le même monde... Peut être de là vient l'expression "rpm saynul deb saymieu" que tout le monde a laissé se répendre parceque c'est drôle ?

          Pour ceux qui, comme moi, n'ont connu rpm qu'au travers de urpmi au début, forcément ça faisait bizarre :p et là c'était plutot du "deb saynul rpm saymieu", parceque bon... à part la gestion de multiples versions... 'fin bref...

          Non ?
        • [^] # Re: Vers un format unifié?

          Posté par (page perso) . Évalué à 4.

          Bon en même temps, un projet qui a pour but de définir un base standard pour les distributions Linux ne prenant pas en compte une distribution historique et reconnue, ainsi que la distribution la plus populaire du marché, j'appelle ça un gag.

          Et avec LSB, ça fait 3 versions de RPM existantes, l'officielle (rpm.org), l'officielle aussi (rpm5.org) et la version LSB (moins de fonctionnalités (pas de "trigger", par exemple)).

          Donc je reste pour le format DEB

          "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

          • [^] # Re: Vers un format unifié?

            Posté par (page perso) . Évalué à 6.

            Version courte :
            c'est bien ce que je dis, on est dans les problématiques d'égo et non techniques...

            Version un peu plus longue :
            D'ailleurs : "ainsi que la distribution la plus populaire du marché"
            je pense que tu veux parler de ubuntu...
            aller, un petit historique :
            - 2001 : première version de LSB
            - 2004 : première version d'ubuntu

            Après, si ubuntu a volontairement souhaité prendre une distrib n'utilisant pas le format LSB c'est un peu leur choix et leur problème.

            > un projet qui a pour but de définir un base standard pour les distributions Linux ne prenant pas en compte une distribution historique et reconnue j'appelle ça un gag

            C'est vrai qu'à côté de ça on a RedHat, Suse, Novell (oui c'était pas toujours la même chose) qui ne sont pas du tout implantées en entreprise (cible du LSB tout de même) de manière officielle (j'entend par là avec support officiel par exemple)
            Vu comme ça, c'est très logique que RPM ait été choisit et non DEB, utilisé à l'époque dans ... une distribution qui n'offre pas de support officiel en entreprise entre autre.
            • [^] # Re: Vers un format unifié?

              Posté par . Évalué à 1.

              une distribution qui n'offre pas de support officiel en entreprise entre autre.

              La distribution, non, mais tu as plein de boîtes qui vivent du support Debian.
              Et puis si elle est si utilisée, c'est quand même que le support doit être satisfaisant.

              Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

              • [^] # Re: Vers un format unifié?

                Posté par (page perso) . Évalué à 2.

                Je ne dis pas le contraire
                Mais dire que le choix de LSB est mauvais juste parce que c'est une distrib historique (poids de l'argument : 0) et utilisée (poids convenable) est peu pertinent.
                Surtout que les autres distrib, les plus correspondantes à la cible LSB, sont sur un autre, mais identique pour toutes, format.

                > si elle est si utilisée, c'est quand même que le support doit être satisfaisant
                Ca par contre, je ne pense pas.
                Pourquoi debian est-il utilisé ? pour la qualité de son support ? (lequel ?) ou pour les connaissances / compétences personnelles des admins ?
                • [^] # Re: Vers un format unifié?

                  Posté par . Évalué à 1.

                  Mais dire que le choix de LSB est mauvais juste parce que c'est une distrib historique (poids de l'argument : 0) et utilisée (poids convenable) est peu pertinent.

                  Tout à fait d'accord.


                  Surtout que les autres distrib, les plus correspondantes à la cible LSB, sont sur un autre, mais identique pour toutes, format.

                  Oué, c'est pour ça qu'un RPM RHEL pourra être installé sur une Mandriva sans foutre le bronx. Ah ben non.


                  Pourquoi debian est-il utilisé ? pour la qualité de son support ? (lequel ?) ou pour les connaissances / compétences personnelles des admins ?

                  Quel support offre Debian ? C'est écrit là : http://www.debian.org/support
                  → correctifs de sécurité/bugs
                  → Documentation & Wiki (localisés en grande partie)
                  → listes de diffusion (localisées)
                  → bug tracking

                  Pour répondre à ta question, je dirais que les deux sont intimement mêlés, car puisque la distrib est communautaire, ce sont les admins qui fournissent le support. Et ça n'a pas l'air de trop mal marcher.

                  Si ça ne suffit pas, il est possible de s'adjoindre les services d'une société spécialisée.

                  Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

                  • [^] # Re: Vers un format unifié?

                    Posté par . Évalué à 3.

                    > Oué, c'est pour ça qu'un RPM RHEL pourra être installé sur une Mandriva sans foutre le bronx. Ah ben non

                    Ha ben ça tombe bien c'est justement pour cela que LSB a été crée.
                    Les exemples de rpm qui fonctionnent sur toutes les distros ne manquent pas chez les ISV. Aucun problème pour l'installation et la mise en fonction. Le problème se situe ensuite plutôt dans le contenu du rpm, pour le coup...
            • [^] # Re: Vers un format unifié?

              Posté par (page perso) . Évalué à 2.

              aller, un petit historique :
              RPM est pas rentré en 2005 avec LSB 3 ? Donc LSB s'est éloigné de distibution.

              Vu comme ça, c'est très logique que RPM ait été choisit et non DEB, utilisé à l'époque dans ... une distribution qui n'offre pas de support officiel en entreprise entre autre.

              Pas de la part des gros du domaine, c'est vrai. Mais ce n'est de loin pas un argument technique.

              LSB a juste créé une division supplémentaire, c'est ce qui arrive quand on frustre trop de monde.

              "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

      • [^] # Re: Vers un format unifié?

        Posté par . Évalué à 2.

        Perso je vois pas le lien entre les solveurs et le format de paquetages. Mais bon, j'ai pas lu tout le site :p :p

        Je vois pas non plus pourquoi cela serait la fin du troll deb vs rpm, mieux encore yum vs apt vs yaourt ??? De toutes façons apt restera meilleur, forcément épisaytou,na
      • [^] # Re: Vers un format unifié?

        Posté par . Évalué à 4.

        DEB c'est un format utilisable sans les outils Debian (cpio et tar).

        Ratai, debian c est du format Ar_(Unix) , rpm du cpio compressé , rpm5 du xar
    • [^] # Re: Vers un format unifié?

      Posté par . Évalué à 3.

      Ce projet n'a pas à priori de rapport avec les formate de paquets, c'est surtout une manière de représenter les dépendances entre les paquets de manières unifiées, et pas les données, de manières à utiliser les mêmes algos pour les résoudre.

      Une fois le travail fait, le solveur fournit sa ou ses solutions, et les rpm, deb ou whatevers correspondants peuvent être installés.
  • # Et le sudoku ?

    Posté par . Évalué à 4.

    Il y avait un chercheur qui avait utilisé apt pour résoudre des sudoku, il en avait fait une analyse et avait trouvé des améliorations possibles pour apt, mais il disait ne pas être sur que les optimisations qu'il avait trouvé soient utile dans des vrais cas d'utilisation. Son travail seras-t'il pris en compte ?

    J'ai du mal à comprendre pourquoi en voulant uniformiser il y a CUDF Debian pour Debian d'un coté et CUDF pour les autres.

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

  • # Deux billets de Roberto Di Cosmo sur le sujet

    Posté par . Évalué à 4.

    • [^] # Re: Deux billets de Roberto Di Cosmo sur le sujet

      Posté par . Évalué à 3.

      Il s'agit bien ce dont parle ce journal ;) D'ailleurs un des liens du journal pointe vers mancoosi.debian.net. Si tu veux le tester et voir son évolution il est possible d'installer urpmi-dudf depuis qq versions de mdv.

      /blague/
      Fallait pas dire que mdv participait à ce projet, ça va tout flanquer par terre. Quoi y a du mandriva dedans ? bah alors ça doit être tout naze. Quoi y a du debian dedans ? bah alors ça doit être tout rouge.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.