[gull] Truc et astuces: Debian apt: supprimer les paquets installé aujourd'hui

Félix Hauri felix at f-hauri.ch
Mon Dec 3 11:22:49 CET 2012


Voici comment j'ai supprimée des paquets que j'ai installé, ce matin:

# apt-get --purge remove $(
    sed -ne < /var/log/apt/history.log "1,/^Start-Date: $(date +%F)"'/d;
      s/^Install: //;ta;bb;:a;s/:[^,(]*([^)]*)\($\|,\)//;ta;H;:b;
      ${g;s/\n/ /g;p }')

(Au passage, si l'un de vous, lecteur assidu des manpages connait un
 moyen plus simple, je suis prenneur ;-)

Explications?

  - sed ouvre le fichier de logs de apt
    - les lignes, de la première (1) à la première correspondant à
        /^Start-Date: 2012-12-03/ sont ignorées pour la suite
    - les lignes commençant par /^Install: / sont modifiées:
       la chaine est supprimée.
    - tX; -> branchement conditionnel, *si* le précédent s/// à
       trouvé et remplacé qqch. (X == a: on ``saute à a'')
    - bX; -> branchement inconditionnel: on saute à ``b'' (sinon).
      - :X; -> label: un précédent ou futur ``bX'' ou ``tX'' amènera
       ici, s'il a lieu,
      - suppression des ``:arch (vnum, automatic)''
      - boucle pour supprimer *toutes* les occurence de arch...vnum
      - H; stockage du résultat pour impresssion groupée
    - ${} opération à faire sur la dernière ligne
      - g; récupérer les lignes stoquées (et supprimer la ligne courante)
      - s/\n/ /g; remplacer les sauts de lignes par des espaces
      - p; print

sed est très utile!

--
 Félix


More information about the gull mailing list