oct
2
2006

Aptitude Vs Apt-get

apt-get a life Il y a différentes solutions pour installer de nouveaux logiciels sur les systèmes basés sur debian, si l’on se réfère à la philosophie ubuntu, chaque manipulation réalisée à l’aide d’un terminal est un bug qu’il faut corriger. Soit, mais la plupart des documentations de ubuntu-fr utilisent la ligne de commande pour vous faire installer un package, 99,9% de ces tutoriaux utilisent ‘apt-get install’, je ne suis pas pour cette méthode.


Pour réaliser ce billet j’ai utilisé un chroot dapper, je vous invite à faire là même chose si vous voulez tester aptitude en détail vous ne risquerez pas de casser votre système.

  1. L’update des repertory
  2. L’update nécessaire à la mise à jour des répertory du /etc/apt/sources.list est une commande importante, voyons les différences

    Avec apt-get

    Avec aptitude

    Nous pouvons voir que aptitude :
    Construit l’arbre des dépendances (Building dependency tree…).
    Il lit les informations d’état étendus (Reading extended state information).
    Initialise l’état des packets (Initializing package states).
    Crée sa base de tags (Building tag database… ).

  3. Installation juste un peu différente
  4. Aptitude utilise la même syntaxe que apt-get pour la majorité des commandes.
    Installation de mysql-client depuis apt-get

    Depuis aptitude

    L’installation diffère un peu de chaque côté, aptitude ne suggère pas de packet (le “Suggested package”), il installe directement les packets recommendés (“Recommended”).

  5. La désinstallation
  6. La désinstallation depuis apt-get

    La désinstallation depuis aptitude

    On constate que apt-get ne prends pas en compte les packets qui ont été installés avec mysql-client, il ne désinstalle que le packet mysql-client, de son coté aptitude gére les dépendances et fait remarquer que des packets deviennent obsolètes sans mysql-client, (c’est la partie surlignée). Notez qu’avec apt-get nous récupérons 65.5ko de place libre et qu’avec aptitude nous récupérons 56.5Mo !!! La désinstallation depuis aptitude est bien plus propre.

  7. Un dist-upgrade
  8. Voyons le comportement de apt-get et aptitude sur un dist-upgrade, je fais passer le chroot de dapper à edgy.

    Avec apt-get

    Reading package lists…
    Building dependency tree…
    The following packages will be REMOVED:
    libnewt0.51
    The following NEW packages will be installed:
    console-setup console-terminus dash dmidecode gcc-4.1-base laptop-detect

    x11-common xkb-data
    The following packages have been kept back:
    ubuntu-minimal
    The following packages will be upgraded:
    adduser alsa-base alsa-utils apt apt-utils aptitude base-files bash

    vim-runtime whiptail wireless-tools wpasupplicant xfsprogs zlib1g
    138 upgraded, 22 newly installed, 1 to remove and 1 not upgraded.

    Avec aptitude

    Reading package lists…
    Building dependency tree…
    Reading extended state information…
    Initializing package states…
    Building tag database…
    The following packages are BROKEN:
    upstart
    The following NEW packages will be automatically installed:
    console-setup console-terminus dash dmidecode file gcc-4.1-base

    vim-tiny volumeid x11-common xkb-data
    The following packages will be automatically REMOVED:
    libnewt0.51
    The following NEW packages will be installed:
    console-setup console-terminus dash dmidecode file gcc-4.1-base

    vim-tiny volumeid x11-common xkb-data
    The following packages will be REMOVED:
    libnewt0.51
    The following packages will be upgraded:
    adduser alsa-base alsa-utils apt apt-utils aptitude base-files bash

    wireless-tools wpasupplicant xfsprogs zlib1g
    139 packages upgraded, 29 newly installed, 1 to remove and 0 not upgraded.
    Need to get 78.3MB of archives. After unpacking 41.1MB will be used.
    The following packages have unmet dependencies:
    upstart: Conflicts: sysvinit but 2.86.ds1-14.1ubuntu13 is to be installed.
    Resolving dependencies…
    The following actions will resolve these dependencies:

    Keep the following packages at their current version:
    libgnutls13 [Not Installed]
    libldap2 [2.1.30-12ubuntu3 (now)]
    libtasn1-3 [Not Installed]
    startup-tasks [Not Installed]
    system-services [Not Installed]
    ubuntu-minimal [0.119 (now)]
    upstart [Not Installed]
    upstart-compat-sysv [Not Installed]
    upstart-logd [Not Installed]

    Score is -14

    Accept this solution? [Y/n/q/?]

    La mise à niveau ne se produira pas de la même façon, aptitude détecte que le packet upstart est cassé et il essayera de réparer ce problème, alors que apt-get l’ignore carrément, il y a des chances pour qu’il casse la mise à niveau avec une erreur. Aptitude vous proposera pour finir une solution qu’il vous faudra choisir.
    (Je ne connais pas la définition du Score, j’ai parcouru les sources de aptitude et il semblerait que ce soit une valeur attibuée aux packets et qui servent à aptitude pour définir l’action à appliquer. Si vous connaissez la définition de ce Score je vous écoute.)

  9. L’interface d’aptitude
  10. Aptitude possède sa propre interface dont voici une capture, si vous la lancez depuis un terminal dans une session X la souris vous permettra d’acceder au menu sans passer par les racourcis clavier.

Aptitude possède de nombreuses autres possibilités comme “la possibilité de récupérer un packet selon une version”, “garde un journal de toutes ses actions dans /var/log/aptitude”, “facilite la recherche de logiciels obsolètes en les listant sous « Paquets obsolètes ou créés localement »” et bien d’autres que je ne détaillerai pas ici, je vous invite à lire le Manuel de l’utilisateur d’aptitude.

17 Commentaires + Commenter

  • Je me lève tranquile ce matin, je lis mes ptit niouzes et… mon monde s’écroule : apt-get c’est plus le top du top moumoute !!!
    Va falloir que je me dist-upgrade aussi, moi :-)

  • Et oui et ça fait ça au début ;) mais à force tu vas t’y faire. Dans un gros dist-upgrade genre changement de version tu vas vraiment l’aimer.

  • Bravo pour ce billet!

    aptitude se montre en effet beaucoup plus efficace pour les grosses mises à jour:
    Lors du passage de Dapper à Edgy, un paquet x11-common me faisait des misères: génération d’un paquet cassé, dépendance cyclique,… pas moyen avec apt-get, même armé de tous ses argmuments.
    aptitude a gégré ce conflit sans problème…
    Pourquoi alors, aptitude n’est-il pas systématiquement utilisé en lieu et place d’apt-get???

  • Merci,

    Pour ta question sur l’utilisation de apt-get, je crois que c’est parsque aptitude remplace dselect :), il doit y avoir des problèmes de compatibilité je pense pour apt-get, sinon peut-être l’abitude des gens aussi.

  • > Pourquoi alors, aptitude n’est-il pas systématiquement utilisé en lieu et place d’apt-get???

    J’avait posé cette question sur IRC et on m’as répondu que apt-get était l’installateur historique et que c’était par habitude que l’on continuait a l’utilisé

  • J’entendais souvent dire qu’aptitude était mieux qu’apt-get.
    Maintenant que tu as fait la démonstration sur différents points je suis convaincu (enfin je m’étais déjà autoconvaincu quelques temps après avoir fait quelques essais sur aptitude).
    Je ne savais pas qu’aptitude proposais une interface texte.

    Merci.

  • euh, les screencopy sont illisibles sous une résolution genre 1600*1200.

    Pourquoi ne pas avoir faire une classe css "code" pour faire ton petit encart texte, après tout, une commande tapée dans un terminal n’est QUE du texte !

    Alors pourquoi en faire une image ? oO

    En plus ça serait plus léger pour ta page, et accessible !

  • (sinon il est sympa ton blog, bonne continuation koupaingue :p)

  • animimotus, pourquoi j’ai fais des screenshot plutot que des copier-collé ? parsque la mise en forme d’un aptitude install est plus propre depuis un screenshoot qu’une remise en page en html. Un simple alt+impr écran vaut mieux qu’un copier-coller et plein de balises. Ensuite je trouve que c’est plus parlant avec un screenshot.
    Par contre je ne comprend pas pourquoi c’est illisible dans ta résolution, la taille de l’image ne doit pas bouger, je serais curieux de voir ce que ça donne sur un 1600×1200, perso je suis en 1280×1024 et ça passe très bien.

    Voilà j’espère avoir répondu à tes questions ;)

  • bonjour

    comment peut on imprimer la documentation sur aptitude

    merci

  • Si tu parles du man:

    $man -t aptitude > aptitude ps
    ensuite:
    $ps2pdf aptitude.ps

    et tu obtiens un beau aptitude.pdf qu’il ne te reste plus qu’a imprimer.

    Je te l’ai fais c’est disponible ici:
    macsim.labolinux.net/uplo…

  • bonjour macsim

    merci de m’avoir rèpondu si vite

    pour le lien ça marche mais le man est en anglais c’est une lacune chez moi je sais.
    pour la console la première ligne marche mais pas la seconde (error2)
    j’ ai eu 98 et xp ce qui fait que j’ai toujours ètè un assistè,
    merci,si tu m’a pas le temps de me rèpondre laisse tomber, je suis surpris qu’il n’y ai pas plus de personne qui s’interesse au libre.UBUNTU est quand mème bien fait

  • Bonjour michpapsc,

    tu peux trouvé la page de manuel de aptitude en français ici:
    http://www.annodex.net/cgi-bin/m...

    Pour ce qui est de la conversion en pdf, tu n’as peut-être pas installé groff-base.

  • merci macsin
    je devrais arriver a me dèbrouiller maintenant
    oui groff-base est bien cochè vert dans synaptic,je vais essayè de l’utiliser
    j’ espère que les fichiers unitilisès ne vont pas devenir une charge comme chez xp
    c’est pourquoi j ‘essayes au maximun d’utiliser aptitude
    merci de tes conseils michpapsc

  • Bonjour max

    Merci pour avoir évalué les caractéristiques qui différencie l’usage d’apt-get et aptitude sous ubuntu
    J’avais bien remarqué des différences sans pour autant m’en soucier ( ho no encore un jeanfoutiste ^^ )

    Voila maintenant une claire raison de check aptitude ; )

    Crevurement
    Papa Fredo ;)

  • Bonjour
    Pour compléter ce post au niveau de la désinstallation avec apt-get, il est tout à fait possible de supprimer en même temps les paquets installés (dépendances) avec le paquet que l’on souhaite supprimer en utilisant:

    sudo apt-get autoremove {nom du paquet}

  • [...] qui est plus volontiers invoqué dans la documentation. De mon point de vue, étayé par cet article ou encore celui-ci, aptitude est à la fois plus souple et plus puissant qu’apt-get, et avant [...]

Laisser un commentaire