Existe-t-il un moyen d’afficher l’historique des paquets modifiés par apt-get via la ligne de commande?
Toutes les actions avec apt (apt-get) sont enregistrées. Ces fichiers sont disponibles dans / var / log / apt /. Pour afficher l'historique le plus récent, exécutez:
less /var/log/apt/history.log
Ces journaux sont pivotés (tous les mois, je suppose), les anciens fichiers seront suffixés par un numéro et compressés. Donc, pour afficher l'historique suivant, utilisez:
zless /var/log/apt/history.log.1.gz
Pour afficher les journaux disponibles:
ls -la /var/log/apt/
Vous pouvez également créer une commande courte pour afficher le contenu intéressant.
Ajoutez cette fonction personnalisée à votre ~/.bashrc
:
### pars for fun: install | remove | rollback
function apt-history(){
case "" in
install)
grep 'install ' /var/log/dpkg.log
;;
upgrade|remove)
grep /var/log/dpkg.log
;;
rollback)
grep upgrade /var/log/dpkg.log | \
grep "" -A10000000 | \
grep "" -B10000000 | \
awk '{print "="}'
;;
*)
cat /var/log/dpkg.log
;;
esac
}
Et appelez-le dans un terminal comme celui-ci:
[email protected]:~$ 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
Extrait de ici
Vous pouvez également utiliser la commande suivante pour répertorier les packages récemment installés
grep "\ install\ " /var/log/dpkg.log
Si vous souhaitez que les packages installés et non ultérieurement désinstallés, 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)
Ce sont les installations moins les suppressions correspondantes.
Références:
Voici comment vous le faites réellement, dites le paquetage:
_P=mutter &&
(cat /var/log/dpkg.log{,.1};zcat /var/log/dpkg.log.*.gz) |
egrep --text "^[^ ]* [^ ]* (configure|install|remove|status [^ ]*|trigproc|upgrade) $_P[: ]" |
sort --reverse | less
L'utilisation de dpkg.log capture les opérations que apt-get ne voit pas.
Sortie:
2016-12-20 09:47:35 status unpacked mutter:amd64 3.22.2-2ubuntu1~ubuntu16.10.1
2016-12-20 09:47:35 status installed mutter:amd64 3.22.2-2ubuntu1~ubuntu16.10.1
…
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), par exemple 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)
Cela affiche les fichiers journaux d’historique d’apt pour skypeforlinux, y compris les trois lignes précédentes, pour obtenir la date. Puis itère sur le résultat et fait écho aux dates et versions pertinentes.
Remplacez la valeur de la variable package par le nom de votre package, fonctionne même pour plusieurs packages à 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)