Comment afficher l'historique des commandes apt-get install
que j'ai exécutées manuellement?
Il me semble que toutes les méthodes disponibles montrent tout ce qui a été installé dès le début de l'installation d'Ubuntu.
Comment afficher l'historique de apt-get install
depuis la fin du processus d'installation de mon système?
Je pense que la réponse donnée ici par kos est la meilleure façon que j'ai vue jusqu'à présent. Bien que le Centre logiciel utilise apt
, tout ce qu'il a installé sera également répertorié.
La commande est:
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'
Il suffit de taper la commande suivante dans votre terminal pour afficher tous les journaux d'installation.
grep " install " /var/log/dpkg.log
Pour simplifier la réponse @Arronical, un truc intéressant que j’ai appris récemment est que vous pouvez utiliser zcat -qf
pour lire les fichiers txt et txt gzipped.
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'
devient
zcat -qf /var/log/apt/history.log* | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'
De l'homme zcat:
-q --quiet
Suppress all warnings.
-f --force
Force compression or decompression even if the file has multiple links or the corre‐
sponding file already exists, or if the compressed data is read from or written to a
terminal. If the input data is not in a format recognized by gzip, and if the option
--stdout is also given, copy the input data without change to the standard output: let
zcat behave as cat. If -f is not given, and when not running in the background, gzip
prompts to verify whether an existing file should be overwritten.
Voici un script qui n'imprime que le logiciel actuellement installé forfaits de premier niveau, où "packages de niveau supérieur" est défini en tant que packages atp dont aucun autre package atp ne dépend. Si de tels programmes de niveau supérieur ont été installés par atp ou par un gestionnaire de paquets tel que synaptic, ils ont été choisis manuellement par l'utilisateur.
#!/bin/sh
NumDaysAgo=18
find /var/lib/dpkg/info -name "*.list" -mtime -$NumDaysAgo \
-exec stat -c $'%y\t%n' {} \; | \
sed -e 's,/var/lib/dpkg/info/,,' -e 's,\.list,,' | \
sort -r | \
while read Date Time Xxx Pkg
do
lncnt=$(apt-cache --installed rdepends $Pkg | wc -l)
if [ $lncnt -eq "2" ]
then echo "$Date $Time $Pkg"
fi
done
echo "JOB COMPLETED: $BASH_SOURCE"
Les packages sont imprimés dans l'ordre inverse, en supposant que l'utilisateur a plus de chance de vouloir obtenir les informations les plus récentes plus tôt et en raison de la lenteur du programme.
Déroulement du programme:
/var/lib/dpkg/info/
. Les temps de fichier de fichier sont les temps d'installation.$Pkg
, un appel à apt-cache rdepends $Pkg
demande les dépendances inverses de $Pkg
. S'il n'y a pas de dépendances, il s'agit alors d'un package de niveau supérieur et les informations sur le package sont imprimées: date time packagename Notes:
apt-cache rdepends $Pkg
qui était destiné à un œil humain et qui pourrait changer dans les futures versions d’apt.dpgk
ne sont pas fiables, car ils seront pivotés après avoir atteint un certain volume.apt-chache
apt-cache rdepends ...
est très lent, probablement parce que chaque appel est calculé en effectuant une itération à travers toutes les dépendances. Par conséquent, le script ci-dessus commence à partir des dernières installations pour offrir à l'utilisateur autant de gratification instantanée que possible.--installed
après apt-cache
vérifie que les packages installés par dpkg sont également installés par apt. Si l'utilisateur ou un autre logiciel d'installation contournait apt et utilisait dpkg directement, cela serait possible. CE CAS N'A PAS ÉTÉ TESTÉ, mais je pense que quelque chose de notable serait imprimé dans la sortie standard ou d'erreur/home
qui contenait ledit logiciel tiers, cette sortie conviendrait.Si vous souhaitez connaître l'historique des commandes apt-get install
, utilisez la commande suivante:
grep "apt-get install" .bash_history
Sortie:
ravan@ravan:~$ grep "apt-get install" .bash_history
Sudo apt-get install --no-install-recommends ubuntu-mate-core ubuntu-mate-desktop
Sudo apt-get install xfce4
Sudo apt-get install xfce4.12
Sudo apt-get install pgadmin
Sudo apt-get install touchegg
Sudo apt-get install aptitude
Sudo apt-get install aptitude
Sudo gedit .bash_history | grep "apt-get install"
Sudo apt-get installvim
grep "apt-get install" .bash_history
cat .bash_history | grep "apt-get install"
Pour d'autres informations, voir informations supplémentaires .
Il existe également des informations d'installation plus détaillées dans /var/log/apt/
dans les fichiers history.log
et history.log.X.gz
et dans les fichiers term.log
et term.log.X.gz
.
Si vous voulez uniquement l'historique des commandes incluses apt-get
, alors
history | grep apt-get
Si vous voulez voir tout ce que vous avez installé en exécutant:
Sudo apt-get install [package]
Et vous ne vous êtes pas intéressé à l'historique bash, vous ne voulez pas non plus afficher l'historique de ce type d'installation pour un autre utilisateur (ou tous les utilisateurs), vous pouvez simplement exécuter:
history | grep "apt-get install"
Et cela devrait vous donner des résultats plutôt pertinents.
Notez que certains arguments peuvent être définis avant l'installation, comme le fait le script virtualmin lors de l'installation: apt-get -y install packagename.
Donc, si vous voulez capturer toutes les commandes d'installation, vous devez modifier la requête regex.
zcat -qf /var/log/apt/history.log* | grep -Po '^Commandline: apt-get.*install (?!.*--reinstall)\K.*'
Pour voir ce que vous avez installé, supprimé, réinstallé, etc. Plus d'infos sur le voyage des installations apt-get.
La réponse peut être modifiée dans un alias:
alias apted='zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | fgrep Commandline: | cut -d " " -f 2- | grep -P "^|install"'