Est-il possible d'afficher l'historique des paquets modifiés par apt-get via une 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 soumis à une rotation (tous les mois, je suppose), les anciens fichiers seront suffixés avec un numéro et compressés. Donc, pour afficher le prochain historique, 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 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 appelez-le 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
Vous pouvez également utiliser la commande suivante pour répertorier les packages récemment installés
grep "\ install\ " /var/log/dpkg.log
Si vous voulez que les paquets qui ont été installés et pas 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)
Il s’agit de l’installation moins toute suppression correspondante.
Références:
Voici comment vous le faites réellement, dites package mutter:
_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
Utiliser dpkg.log capture les opérations qu’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 exemple (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)
Les fichiers d’historique d’historique de apt pour skypeforlinux, y compris les trois lignes précédentes, permettent d’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 votre nom de package, 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)