GNU/Linux >> Tutoriels Linux >  >> Debian

Debian – Répertorier les packages sur un système basé sur Apt par date d'installation ?

Comment puis-je répertorier les packages installés par date d'installation ?

Je dois le faire sur debian/ubuntu. Des réponses pour d'autres distributions seraient bien aussi.

J'ai installé beaucoup de choses pour compiler un certain morceau de code, et je veux obtenir une liste des packages que j'ai dû installer.

Réponse acceptée :

Les distributions basées sur RPM comme Red Hat sont faciles :

rpm -qa --last

Sur Debian et d'autres distributions basées sur dpkg, votre problème spécifique est également simple :

grep install /var/log/dpkg.log

À moins que le fichier journal n'ait subi une rotation, auquel cas vous devriez essayer :

grep install /var/log/dpkg.log /var/log/dpkg.log.1

En général, dpkg et apt ne semblent pas suivre la date d'installation, en raison de l'absence d'un tel champ dans le dpkg-query page de manuel.

Et éventuellement l'ancien /var/log/dpkg.log.* les fichiers seront supprimés par la rotation des journaux, il n'est donc pas garanti que cette méthode vous donne l'historique complet de votre système.

Une suggestion qui apparaît plusieurs fois (par exemple, ce fil) est de regarder le /var/lib/dpkg/info répertoire.
Les fichiers qu'il contient suggèrent que vous pourriez essayer quelque chose comme :

ls -t /var/lib/dpkg/info/*.list | sed -e 's/.list$//' | head -n 50

Pour répondre à votre question sur les sélections, voici un premier passage.

construire la liste des packages par dates

$ find /var/lib/dpkg/info -name "*.list" -exec stat -c $'%nt%y' {} ; | 
    sed -e 's,/var/lib/dpkg/info/,,' -e 's,.listt,t,' | 
    sort > ~/dpkglist.dates

construire la liste des packages installés

$ dpkg --get-selections | sed -ne '/tinstall$/{s/[[:space:]].*//;p}' | 
    sort > ~/dpkglist.selections

rejoindre les 2 listes

$ join -1 1 -2 1 -t $'t' ~/dpkglist.selections ~/dpkglist.dates 
    > ~/dpkglist.selectiondates

Pour une raison quelconque, il n'affiche pas beaucoup de différences pour moi, il peut donc y avoir un bogue ou une hypothèse invalide sur ce que --get-selections signifie.

Vous pouvez évidemment limiter les packages soit en utilisant find . -mtime -<days> ou head -n <lines> , et modifiez le format de sortie comme vous le souhaitez, par exemple

$ find /var/lib/dpkg/info -name "*.list" -mtime -4 | 
    sed -e 's,/var/lib/dpkg/info/,,' -e 's,.list$,,' | 
    sort > ~/dpkglist.recent

$ join -1 1 -2 1 -t $'t' ~/dpkglist.selections ~/dpkglist.recent 
    > ~/dpkglist.recentselections

pour répertorier uniquement les sélections qui ont été installées (modifiées ?) au cours des 4 derniers jours.

Vous pourriez probablement aussi supprimer le sort commandes après avoir vérifié l'ordre de tri utilisé par dpkg --get-selections et faire le find commande plus efficace.


Debian
  1. Comment répertorier tous les packages ou des packages spécifiques installés sur le système Debian/Ubuntu Linux

  2. Système basé sur Debian, un seul programme graphique, rien d'autre ?

  3. Debian – Comment bloquer les non-free avec les préférences Apt ?

  4. Apt obtenir des exemples de commandes pour gérer les packages sur Ubuntu/Debian

  5. Apt-Get liste les packages installés | Liste installée avec Apt sur Ubuntu

Comment configurer sources.list sur Debian 10

Comment configurer sources.list sur Debian 9

Comment installer des paquets sur Debian 10

Comment répertorier les packages installés triés par date d'installation sous Linux

Comment répertorier tous les packages pouvant être mis à niveau dans Ubuntu, Debian et Mint

Comment supprimer des packages d'Ubuntu et de Debian