Journal apti 0.5 : frontend à aptitude

Posté par . Licence CC by-sa
27
27
jan.
2014

Bonjour,

En septembre 2012, j'avais écrit un journal de présentation d'apti, une surcouche à aptitude améliorant la présentation des paquets.

Depuis, j'ai été rejoint par quelqu'un et apti a pas mal évolué. Comme nombre d'entre vous se demandent sûrement ce qu'il est devenu, voilà un deuxième journal.

Présentation

Apti est une surcouche à aptitude, un gestionnaire de paquet utilisé par Debian (et ses dérivés), inspiré par yaourt et yum.

Apti améliore la présentation des commandes safe-upgrade, full-upgrade, install, remove, purge et search.

commande apti install

commande apti safe-upgrade

La prise en main est immédiate, il s'utilise de même façon qu'aptitude : il suffit de remplacer la commande aptitude par apti. Apti est aussi utilisable sans droit superutilisateur (ex: apti install toto), le mot de passe root ou sudo est demandé par la suite si besoin.

Nouveautés depuis le dernier journal

  • amélioration de la présentation :
    • affiche plus épuré, plus beau (avec un en-tête à la yum) ;
    • affichage de la taille des paquets (optionnel) ;
    • séparations des paquets installés/désinstallés explicitement, ceux mise à jour, et les dépendances associées.
  • fichier de configuration (modifications des couleurs, des effets (gras, souligné, clignotant), …) ;
  • multilingue (anglais et français) ;
  • corrections de bugs…

exemple de couleurs personnalisées

Installation

Testé sous Debian testing et Ubuntu 12.04.

Dépendances : aptitude, ruby >= 1.9, ruby-i18n

Récupérer apti via git (ou téléchargement manuel sur gitorious) :

$ git clone -b stable git://gitorious.org/apti/apti.git

Vérifiez qu'il n'y a pas de vilain code :

$ if grep -r "rm -r" apti; then echo "ATTENTION"; else echo "ok"; fi

On place apti dans /usr/local/ :

$ su
# mv apti /usr/local/

Et on crée le lien qui va bien :

# ln -s /usr/local/apti/main.rb /usr/local/bin/apti
# exit

Pour les utilisateurs de zsh, vous pouvez avoir de l'autocompletion en ajoutant dans votre zshrc :

compdef apti=aptitude

Conclusion

Pour les utilisateurs d'apt-get, voilà une bonne raison de passer à apti[tude] !

  • # marche pô

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

    Debian sid, ruby 1.9.1

    /usr/local/apti/src/apti/config/Config.rb:96:in `write_to': undefined method `mkdir_p=' for FileUtils:Module (NoMethodError)
        from /usr/local/apti/src/apti/config/Config.rb:59:in `initialize'
        from /usr/local/apti/src/apti/Apti.rb:51:in `new'
        from /usr/local/apti/src/apti/Apti.rb:51:in `initialize'
        from /usr/local/bin/apti:9:in `new'
        from /usr/local/bin/apti:9:in `<main>'
    

    T'aurais une idée ?

    It's a fez. I wear a fez now. Fezes are cool !

    • [^] # Re: marche pô

      Posté par . Évalué à 1.

      Oups, petite erreur lors de la création du répertoire de conf.
      C'est corrigé, tu peux mettre à jour (git pull).

  • # Upstream

    Posté par . Évalué à 5. Dernière modification le 27/01/14 à 15:40.

    Salut,

    L'affichage semble beaucoup plus agréable avec apti et ressemble en effet fortement à ce que produit yum. Une question me vient cependant à l'esprit, pourquoi ne pas avoir apporté ces changements directement à aptitude ?

    • [^] # Re: Upstream

      Posté par . Évalué à 3.

      Probablement parce que ça a commencé comme un petit projet. Beaucoup de monde développe des surcouche a apt/aptitude, par exemple moi j'ai mon apt-search :

      #!/bin/zsh
      
      autoload -U colors
      colors
      
      function install-ask () {
        echo "Voulez vous installer $1 ? (y/n)"
        read rep
        if [[ "$rep" = 'y' ]]; then
          sudo apt-get install "$1"
        fi
      }
      
      pkgs=() # list of unstalled packages
      integer match=0 # 1 if a package not installed with same name
      
      # We parse the list of packages find
      readonly old_IFS=$IFS
      IFS='
      '
      for line in ${(oSI:N:)$(apt-cache search "$@")#lib} ; do
        pkg="${line%% *}"
        if [[ -n ${(M)$(dpkg -s "${pkg}" 2> /dev/null)#Status: install ok installed} ]]; then
          col='red'
        else
          # The package is not installed
          pkgs=($pkgs $pkg)
          [[ ${pkg} = "$*" ]] && match=1
          col='green'
        fi
        echo "$fg[$col]${line/ - /$reset_color $fg[blue]}$reset_color"
      done
      IFS=$old_IFS
      
      # Propositions
      if [[ "${#pkgs}" -eq 1 ]]; then
        install-ask "${pkgs[1]}"
      elif [[ $match -eq 1 ]]; then
        install-ask "$*"
      fi

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

  • # Trop de surcouche, tue la surcouche

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

    Apti est une surcouche d'aptitude, qui est lui-même une surcouche d'apt-get, qui est lui-même une surcouche de dpkg.

    J'aime Debian, mais trop, c'est trop. Sous Fedora/CentOS/Red Hat, on a juste YUM qui est une surcouche à RPM, ça marche très bien et ça affiche autant, sinon plus d'information.

    Donc, développeurs de Debian, faites quelque chose, réunissez les surcouches à apt-get et améliorez-le, sinon virez-le.

    • [^] # Re: Trop de surcouche, tue la surcouche

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

      C'est surtout qu'il n'y a pas autant de surcouche, aptitude n'est pas une surcouche à apt-get.

      « 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: Trop de surcouche, tue la surcouche

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

      Ah non, pitié, pas un affichage kikoolol à apt-get!

      Les goûts et les couleurs… Moi, j'aime bien l'affichage sobre à actuel…

      Quand je tape apt-get install toto, je me doute que les paquets en plus de toto sont des dépendances, j'ai pas besoin d'une affichage qui me force à scroller…

      • [^] # Re: Trop de surcouche, tue la surcouche

        Posté par . Évalué à 10.

        Quand je fais une mise à jour via aptitude et que je vois quelque chose comme ça, je trouve ça tellement peu lisible que je préfère presque valider sans lire.

        Apti apporte je trouve beaucoup plus de clarté (avec un affichage moins compressé, qui en effet prend plus de ligne sur le terminal).

        Si c'est le côté « kikoolol » qui te gène, tu peux supprimer les couleurs (et la colonne avec la taille des paquets).

        • [^] # Re: Trop de surcouche, tue la surcouche

          Posté par . Évalué à 3.

          Je ne sais pas si ça marche pour aptitude mais quand il y en a beaucoup, j'utilise d'habitude « apt-get upgrade -s » (ou dist-upgrade), l'affichage des opérations en liste est plus lisible.

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

        • [^] # Re: Trop de surcouche, tue la surcouche

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

          Pour moi c'est plutôt à ça que ça ressemble une mise à jour avec aptitude:
          aptitude

          C'est plutôt lisible àmha.

        • [^] # Re: Trop de surcouche, tue la surcouche

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

          Tu peux toujours faire ça :

          aptitude search -F'%p %v %V %I %Z' ~U
          

          C’est ce qui est bien avec aptitude, tu as des fonctions de recherche puissantes, et on peut choisir ce qu’on affiche, les exemples que j’utilise régulièrement

          Sinon, pour bien savoir ce que tu met à jour, comment et pourquoi, apticron, apt-listchanges et apt-listbugs sont tes amis…

      • [^] # Re: Trop de surcouche, tue la surcouche

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

        Personne ne t'oblige à l'utiliser :)

    • [^] # Re: Trop de surcouche, tue la surcouche

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

      apt et aptitude sont des gestionnaires de paquets au-dessus de dpkg.

      La question est plutôt de savoir où se positionne apti. Je trouve curieux d'utiliser aptitude plutôt qu'un bibliothèque dédiée, de mémoire elles existent pour perl et python. Quant à ruby je pense que apt-listbug s'appuie sur un module dpkg. Bref il existe des interface de programmation qui me semblent plus indiquées.

    • [^] # Re: Trop de surcouche, tue la surcouche

      Posté par . Évalué à 2.

      on a juste YUM qui est une surcouche à RPM, ça marche très bien et ça affiche autant, sinon plus d'information.

      Ben exactement comme sous debian en fait, apt-get (officiellement conseillé) en surcouche à dpkg. Ca affiche autant d'infos, et c'est beaucoup plus rapide.

      (Moi aussi je peux troller hein)

      • [^] # Re: Trop de surcouche, tue la surcouche

        Posté par . Évalué à 2.

        Apparemment c'est aptitude:

        aptitude is the recommended package manager for Debian GNU/Linux systems.
        http://www.debian.org/doc/manuals/debian-faq/ch-uptodate.en.html

        Par contre pour les mises à jour entre releases, ça dépend.

        • [^] # Re: Trop de surcouche, tue la surcouche

          Posté par . Évalué à 10.

          Hein? Ca a rechangé?
          J'ai l'impression que la recommandation change régulièrement entre apt-get et aptitude!

          • [^] # Re: Trop de surcouche, tue la surcouche

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

            J'ai surtout l'impression que toutes les pages de documentation de debian ne sont pas cohérente entre elles et qu'en fonction de celle qui est citée, on a une autre version. (le troll revenant régulièrement, on a l'impression que ça change souvent).

            Par exemple, si on regarde les release notes de Squeeze :

            The recommended way to upgrade from previous Debian releases is to use the package management tool apt-get.

            Ça reste cohérent car c'est bien dit dans l'autre lien que ça parle pas des changements de version de la distribution mais ce genre de citation n'aide pas pour donner une impression de cohérence.

            « 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: Trop de surcouche, tue la surcouche

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

              Bon on utilise quoi quand finalement?

              Écrit en Bépo selon l’orthographe de 1990

              • [^] # Re: Trop de surcouche, tue la surcouche

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

                Ce que tu veux.

                « 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: Trop de surcouche, tue la surcouche

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

                  Ça sert à quoi de recommander d’utiliser un tel ou un tel successivement alors?

                  Sinon, il est possible d’utiliser apt-get et aptitude en même temps ou pas? Il me semble que c’est possible depuis quelques temps mais je ne suis pas sûr.

                  Écrit en Bépo selon l’orthographe de 1990

                  • [^] # Re: Trop de surcouche, tue la surcouche

                    Posté par . Évalué à 2.

                    Ça ne pose pas de problème en effet.

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

                  • [^] # Re: Trop de surcouche, tue la surcouche

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

                    Ça sert à quoi de recommander d’utiliser un tel ou un tel successivement alors?

                    Ce n'est pas les fonctionnalités de base (installer, supprimer un paquet) qui les différencient. Mais les cas problématiques où tu veux installer des centaines de paquets, qu'il y a des conflits et que les dépendances deviennent compliquées à gérer. En gros, les mises à jour de version de distribution. Historiquement, les algos de résolution de conflits peuvent avoir été avancés dans l'un ou l'autre des outils, tour à tour. Le projet recommande dans les notes de version celui qui permet d'installer ou de migrer le mieux possible.

  • # Si c'est pas cassé

    Posté par (page perso) . Évalué à 9. Dernière modification le 27/01/14 à 15:53.

    Je ne vois pas d'info supplémentaire par rapport à aptitude, voire apt-get mis à part la présentation, qui en plus d'être une affaire de gout, risque de se "mettre dans le chemin" (sélection/copie de retours charriot, de codes couleurs, etc.)..

    Tant qu'à faire, ce qu'aucun front-end ne fait PCQJS (AFAIK) ;) c'est donner les infos suivantes (en gras) sur la source du fichier à installer/installé (dans l'ordre - subjectif - d'importance) :

    • Nom du paquet d'origine
    • Nom du dépôt d'origine
    • Version
    • Date de l'install
  • # Clignotement

    Posté par . Évalué à 10.

    En regardant la dernière image, on voit que la colonne taille clignote.
    C'est pour mettre en valeur ici ou ça clignote vraiment dans la console? Parce que je pense que c'est une mauvaise idée. C'est vraiment agaçant! Quand on veut lire une valeur, elle disparait avant qu'on l'ai entièrement lue et il faut attendre que ça se raffiche… Et pareil pour la suivante. J'imagine pas la frustration….

    • [^] # Re: Clignotement

      Posté par . Évalué à 6.

      La dernière image est juste un exemple pour montrer la personnalisation de l'affichage (couleur du texte, couleur de fond, soulignement, et clignotement). Je partage ton avis sur le clignotement, et je te rassure, ce n'est pas l'affichage par défaut.

  • # Question

    Posté par . Évalué à 4.

    aptitude n'est pas censé être déjà user-friendly et être un front-end à apt ?

    Veuillez excuser mon inculture, je suis plutôt slackiste, je n'ai pas l’habitude de ce genre de système compliqué :)

    • [^] # Re: Question

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

      Aptitude est un frontal convivial à dpkg, l'installeur de paquets. Apt est un autre frontal, en ligne de commande. Synaptic est une interface graphique pour Apt.

      Par convivial il faut entendre :

      • un solveur de dépendance
      • une recherche de paquets
      • la gestion du téléchargement
      • etc. des choses que dpkg ne fait pas

      Ça ne veut pas dire que c'est graphique et kikoolol! Aptitude s'utilise en ligne de commande ou avec une interface ncurse. L'interface graphique a été abandonnée.

      "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

      • [^] # Re: Question

        Posté par . Évalué à 2.

        Par convivial il faut entendre :
        un solveur de dépendance
        une recherche de paquets
        la gestion du téléchargement
        etc. des choses que dpkg ne fait pas

        C'est exactement ce que fait apt. Il est donc autant convivial qu'aptitude :-)

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

        • [^] # Re: Question

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

          Jamais dit le contraire.
          J'aurais du écrire "Apt est un autre frontal convivial" mais je pensais que c'était implicite.

          "La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay

      • [^] # Re: Question

        Posté par . Évalué à 2.

        Aptitude est un frontal convivial à dpkg, l'installeur de paquets. Apt est un autre frontal, en ligne de commande. Synaptic est une interface graphique pour Apt.

        Il me semblait avoir lu que aptitude était deprecated (au moins sur Ubuntu, je ne suis pas sûr concernant Debian) ?

        un solveur de dépendance

        aptitude a un solveur différent de apt-get mais ça n'a jamais totalement marché pour moi. Par contre je lis des choses intéressantes concernant ce que saurait faire le solveur du projet Mancoosi avec apt-get.

  • # Très bonne idée :)

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

    étant utilisateur de yaourt sous Archlinux, un des truc que j'aime bien c'est la séparation des "nouvelles version" VS "update de packaging".
    Sinon, l'ajout des tailles et la présentation est vraiment mieux a mon avis… bon boulot!

    • [^] # Re: Très bonne idée :)

      Posté par . Évalué à 2.

      étant utilisateur de yaourt sous Archlinux, un des truc que j'aime bien c'est la séparation des "nouvelles version" VS "update de packaging".

      C'est pas spécifique à yaourt, ça vient des informations de versions du paquet (pkgver et pkgrel dans le pkgbuild). Je crois bien qu'on retrouve un équivalent de ces deux champs dans les paquets au format Debian.

      Après, c'est vrai que yaourt l'affiche de manière conviviale avant l'installation :

      max-laptop% yaourt -Syu
      [sudo] password for max:
      :: Synchronisation des bases de données de paquets…
      core est à jour
      extra 1530,4 KiB 480K/s 00:03 [----------------------] 100%
      community 2,0 MiB 476K/s 00:04 [----------------------] 100%
      multilib est à jour

      ==> Nouvelle révision des paquets :
      extra/subversion 1.8.5-1 1 -> 2
      extra/vim-runtime 7.4.135-1 1 -> 2
      extra/vim 7.4.135-1 1 -> 2
      community/rubyripper 0.6.2-4 4 -> 5

      ==> Mise à jour des logiciels (nouvelle version) :
      extra/imlib2 1.4.5-6 -> 1.4.6-1
      extra/ruby 2.0.0_p353-1 -> 2.1.0-2
      community/ruby-glib2 2.0.2-1 -> 2.1.0-2
      community/ruby-atk 2.0.2-1 -> 2.1.0-2
      community/ruby-cairo 1.12.6-1 -> 1.12.8-1
      community/ruby-gdkpixbuf2 2.0.2-1 -> 2.1.0-2
      community/ruby-pango 2.0.2-1 -> 2.1.0-2
      community/ruby-gtk2 2.0.2-1 -> 2.1.0-2
      community/ruby-iconv 1.0.3-6 -> 1.0.4-2

      ==> Continuer la mise à jour ? [O/n]
      ==> [V]oir les détails. Sélectionner les paquets [M]anuellement.
      ==> --------------------------------------------------------------
      ==>

      "Quand certains râlent contre systemd, d'autres s'attaquent aux vrais problèmes." (merci Sinma !)

  • # Rabats-joie

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

    je vois qu'il y a surtout des rabats-joie sur linuxfr, perso j'aime bien apti pour l'avoir essayé suite au premier journal. J'avais laissé tombé après une réinstalle de mon système mais je vais le reprendre.

    Ceci dit quand je fais un git clone, j'ai un permission denied (je peux quand même download un tar.gz)

  • # Dépendance à ruby-i18n

    Posté par . Évalué à 1.

    Je ne suis pas débianeux et je connais assez mal ruby mais la dépendance à ce paquet est-elle nécessaire ? Ou est-ce une dépendance optionnelle ?

    • [^] # Re: Dépendance à ruby-i18n

      Posté par . Évalué à 2.

      +1, tres interessé par la réponse.
      Je trouve qu'installer ruby juste pour changer l'affichage d'un terminal, c'est un peu la bombe nucleaire pour tuer la mouche ;)

      • [^] # Re: Dépendance à ruby-i18n

        Posté par . Évalué à 3.

        Oui ruby-i18n est obligatoire, pour pouvoir lire les fichiers de traductions (même si on reste en anglais).

        Ruby est déjà une dépendance d'apt-listbugs (fortement recommandé sur Debian testing/sid). Sinon oui il faut bien sûr installer ruby.

Suivre le flux des commentaires

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