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.