web-dev-qa-db-fra.com

Comment afficher l'historique d'apt-get install?

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?

17
TellMeWhy

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.*'
20
Arronical

Il suffit de taper la commande suivante dans votre terminal pour afficher tous les journaux d'installation.

grep " install " /var/log/dpkg.log
9
Vikas Chaudhary

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.
3
jjcf89

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:

  • Le programme commence par rassembler dans une liste tous les paquets installés en lisant les noms de fichiers sous /var/lib/dpkg/info/. Les temps de fichier de fichier sont les temps d'installation.
  • Cette liste est triée dans l'ordre inverse.
  • Pour chaque package installé $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:

  • Le script dépend du format de sortie de apt-cache rdepends $Pkg qui était destiné à un œil humain et qui pourrait changer dans les futures versions d’apt.
  • Le code de la partie rassemblant les noms de fichiers sous/var/lib/dpkg/info/venait de cet article unix.stackexchange . Comme l'a indiqué cette affiche 'mikel' , les fichiers journaux de l'historique dpgk ne sont pas fiables, car ils seront pivotés après avoir atteint un certain volume.
  • Page de manuel pour apt-chache
  • L'appel 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.
  • L'indicateur --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
  • La sortie n'inclut pas les packages choisis manuellement, qui sont devenus par la suite dépendants d'un package supérieur. La sortie peut également inclure des packages qui ont été installés via apt par un logiciel d'installation tiers, et ne sont donc pas réellement installés manuellement. Cependant, si le but de la sortie est de servir de base à la configuration d’un Linux restauré à partir d’un répertoire de sauvegarde /home qui contenait ledit logiciel tiers, cette sortie conviendrait.
  • Certains noms de packages incluent des numéros de version, d'autres non. Mentionné juste pour sensibiliser au fait.
2
Craig Hicks

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

1
Ravan

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.

1
user364819

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.*'
0
Yann Papouin

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"'
0
Mike