139 votes

Comment afficher l'historique de la gestion des paquets apt-get via la ligne de commande ?

Existe-t-il un moyen d'afficher l'historique des paquets qui ont été modifiés par apt-get via la ligne de commande ?

158voto

Lekensteyn Points 162346

Toutes les actions avec apt (apt-get) sont enregistrées. Ces fichiers sont disponibles dans /var/log/apt/. Pour afficher le journal d'historique le plus récent, exécutez :

less /var/log/apt/history.log

Ces journaux font l'objet d'une rotation (tous les mois je suppose), les anciens fichiers seront suffixés par un numéro et compressés. Donc pour voir le prochain historique, utilisez :

zless /var/log/apt/history.log.1.gz

Pour afficher les journaux disponibles :

ls -la /var/log/apt/

27voto

Kresimir Pendic Points 1030

Vous pouvez aussi faire une courte commande pour afficher le contenu intéressant.

  • Ajoutez cette fonction personnalisée à votre ~/.bashrc :

    ### pars for fun: install | remove | rollback
    function apt-history(){
    
          case "$1" in
            install)
                  grep 'install ' /var/log/dpkg.log
                  ;;
            upgrade|remove)
                  grep $1 /var/log/dpkg.log
                  ;;
            rollback)
                  grep upgrade /var/log/dpkg.log | \
                      grep "$2" -A10000000 | \
                      grep "$3" -B10000000 | \
                      awk '{print $4"="$5}'
                  ;;
            *)
                  cat /var/log/dpkg.log
                  ;;
          esac
    }
  • Et l'appeler dans un terminal comme celui-ci :

    kreso@h17:~$ apt-history install
    2013-08-06 14:42:36 install gir1.2-nautilus-3.0:amd64 <none> 1:3.8.2-0ubuntu1~ubuntu13.04.1
    2013-08-06 14:42:36 install python-nautilus:amd64 <none> 1.1-3ubuntu1
    2013-08-06 14:42:37 install insync-nautilus:all <none> 1.0.20
    2013-08-07 14:41:37 install powertop:amd64 <none> 2.1-0ubuntu1
    2013-08-07 18:44:10 install libdiscid0:amd64 <none> 0.2.2-3build1
    2013-08-07 18:44:11 install sound-juicer:amd64 <none> 3.5.0-0ubuntu1

Tiré de ici

8voto

Vous pouvez également utiliser la commande suivante pour lister les paquets récemment installés

grep "\ install\ " /var/log/dpkg.log

2voto

hoffmanc Points 121

Si vous voulez que les paquets qui ont été installés et no ensuite désinstallé, essayez ceci :

comm -23 <(grep "apt-get install" /var/log/apt/history.log | sed 's/.* //' | sort) \ 
<(grep "apt-get remove" /var/log/apt/history.log | sed 's/.* //' | sort) 

Il s'agit des installations moins les suppressions correspondantes.

Références :

2voto

kilgor Points 21

Pour obtenir l'historique des mises à jour d'un paquet spécifique en supposant qu'il a été installé/mis à jour via apt voici un oneliner (bash et zgrep), l'exemple est pour le paquet skypeforlinux :

package='skypeforlinux'; pregex="(${package}[^\)]+\))"; while read -r line; do [[ "$line" =~ ^Start-Date:[[:space:]]([[:digit:]].+) ]] && curdate="${BASH_REMATCH[1]} "; [[ "$line" =~ $pregex ]] && echo "$curdate ${BASH_REMATCH[1]}"; done < <(for i in `ls -tr /var/log/apt/history*`; do zgrep -B3 "$package" $i; done)

Cette commande parcourt les fichiers journaux de l'historique d'apt pour skypeforlinux en incluant les trois lignes précédentes pour obtenir la date. Ensuite, elle itère sur le résultat et renvoie les dates et versions pertinentes.

Remplacer le paquet avec le nom de votre paquet. Cela fonctionne même pour plusieurs paquets, à condition qu'ils commencent par la même chaîne.

Exemple avec sortie :

package='apache'; pregex="(${package}[^\)]+\))"; while read -r line; do [[ "$line" =~ ^Start-Date:[[:space:]]([[:digit:]].+) ]] && curdate="${BASH_REMATCH[1]} "; [[ "$line" =~ $pregex ]] && echo "$curdate ${BASH_REMATCH[1]}"; done < <(for i in `ls -tr /var/log/apt/history*`; do zgrep -B3 "$package" $i; done)
2017-10-19  15:00:09  apache2-utils:amd64 (2.4.18-2ubuntu3.5)
2017-11-24  14:24:45  apache-pom-java:amd64 (10-2build1, automatic)
2018-02-22  16:42:02  apache2-data:amd64 (2.4.18-2ubuntu3.5, automatic)
2018-02-26  15:34:34  apache2:amd64 (2.4.18-2ubuntu3.5)
2018-02-26  15:36:32  apache2-data:amd64 (2.4.18-2ubuntu3.5)
2018-02-26  15:40:50  apache2-data:amd64 (2.4.18-2ubuntu3.5, automatic)
2018-02-26  15:42:07  apache2:amd64 (2.4.18-2ubuntu3.5)
2018-02-26  15:42:39  apache2:amd64 (2.4.18-2ubuntu3.5)
2018-03-15  10:08:50  apache-pom-java:amd64 (10-2build1)
2018-04-20  08:55:07  apache2-data:amd64 (2.4.18-2ubuntu3.5, 2.4.18-2ubuntu3.8)
2018-07-06  08:55:11  apache2-data:amd64 (2.4.18-2ubuntu3.8, 2.4.18-2ubuntu3.9)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X