Comment voir les paquets installés à une date donnée en utilisant 'aptitude'?

49

Est-ce que quelqu'un sait s'il existe un moyen facile de trouver une liste de paquets installés, triés par date, lorsque vous utilisez aptitude (ou apt-get )?

J'ai installé un paquet de paquets pour essayer quelque chose de nouveau, mais cela n'a pas fonctionné. Je voudrais supprimer tous ces paquets pour récupérer de l'espace disque.

J'ai essayé juste de regarder la liste des fichiers .deb téléchargés, mais cela semble être une façon plutôt arriérée de le faire (bien que cela fonctionne).

    
posée Mikeage 08.01.2009 - 08:47
la source

8 réponses

39

Malheureusement, dpkg (le gestionnaire de paquets d’aptitude fonctionne par dessus) ne sauvegarde pas spécifiquement la date d’installation des paquets, bien qu’il soit envisagé de l’ajouter. Cependant, la date d'installation peut être trouvée en regardant le cachet de date des fichiers écrits dans le répertoire /var/lib/dpkg/info .

    
réponse donnée mok0 08.01.2009 - 09:15
la source
18

J'ai configuré aptitude pour écrire dans un journal ( /var/log/aptitude ). Il produit une sortie comme celle-ci;

Aptitude 0.4.11.11: log report
Mon, Feb  9 2009 13:21:28 +0100

IMPORTANT: this log only lists intended actions; actions which fail due to
dpkg problems may not be completed.

Will install 6 packages, and remove 0 packages.
4096B of disk space will be used
===============================================================================
[UPGRADE] apt 0.7.20.1 -> 0.7.20.2
[UPGRADE] apt-utils 0.7.20.1 -> 0.7.20.2
[UPGRADE] base-passwd 3.5.19 -> 3.5.20
[UPGRADE] libgnutls26 2.4.2-5 -> 2.4.2-6
[UPGRADE] libpq5 8.3.5-1 -> 8.3.6-1
[UPGRADE] ucf 3.0015 -> 3.0016
===============================================================================

Log complete.

Ceci montre la date exacte et les paquets que aptitude a installés. Pour configurer cela, suivez la référence d'aptitude;

Option:Aptitude::Log

Default:/var/log/aptitude

Description: If this is set to a nonempty string, aptitude will log the package
installations, removals, and upgrades that it performs. If the value of
Aptitude::Log begins with a pipe character (ie, ''|''), the remainder of its
value is used as the name of a command into which the log will be piped: for
instance, |mail -s 'Aptitude install run' root will cause the log to be emailed
to root. To log to multiple files or commands, you may set this option to a list
of log targets.

Vous trouverez un lien vers la référence d'aptitude dans la page de manuel d'aptitude.

    
réponse donnée jeremiah 26.02.2009 - 16:52
la source
16

Il existe une méthode simple pour afficher la date d'installation de tous les packages. Il suffit d'exécuter:

grep " install" /var/log/dpkg.log*

En conséquence, vous obtiendrez une liste de tous les packages installés avec la date et l'heure exactes.

Merci pour les commentaires qui me mènent à cette solution.

    
réponse donnée jmarceli 21.07.2013 - 02:11
la source
12

J'ai trouvé celui-ci sur le web. Il crée un historique de dpkg en dehors du fichier journal de dpkg.

Cela semble très simple.

function apt-history(){
      case "" in
        install)
              cat /var/log/dpkg.log | grep 'install '
              ;;
        upgrade|remove)
              cat /var/log/dpkg.log | grep 
              ;;
        rollback)
              cat /var/log/dpkg.log | grep upgrade | \
                  grep "" -A10000000 | \
                  grep "" -B10000000 | \
                  awk '{print "="}'
              ;;
        *)
              cat /var/log/dpkg.log
              ;;
      esac
}

Source

EDIT

J'ai essayé ce script sur Ubuntu 8.10 Server et cela fonctionne très bien. Pourriez-vous fournir des informations, comment vous avez résolu votre problème?

    
réponse donnée guerda 08.01.2009 - 09:20
la source
4
  • Utiliser les journaux dpkg

    locate dpkg.log | xargs cat {} | grep " install "
    
  • OU si vous n'avez pas locate

    find /var/log/ -name 'dpkg.log' | xargs cat {} | grep " install "
    
  • Utilisez sort pour garantir un ordre approprié en fonction du temps

    locate dpkg.log | xargs cat {} | grep " install " | sort
    
  • Utilisez tac (reverse cat ) *, head par exemple pour obtenir les 4 dernières entrées

    locate dpkg.log | xargs cat {} | grep " install " | sort | tac | head -n4
    

e.g Pour la dernière commande, je reçois:

2014-10-08 18:56:12 install xorg-server-source:all <none> 2:1.16.1-1
2014-10-08 18:49:34 install libelementary-data:all <none> 0.7.0.55225-1
2014-10-08 18:46:57 install e17:i386 <none> 0.17.6-1
2014-10-08 18:46:56 install libedje-bin:i386 <none> 1.8.6-2.1+b1
    
réponse donnée a20 08.10.2014 - 13:36
la source
3

Vous pouvez également suivre vos actions précédentes en vérifiant /var/log/apt/term.log et les fichiers plus anciens term.log.1.gz etc.). Il comporte des horodatages et un journal complet des messages lors de l'installation.

    
réponse donnée szarki 04.02.2009 - 16:04
la source
1

[RÉPONDRE À LA QUESTION RÉELLE], Oui, il existe une manière FACILE de rechercher des paquets installés à une date donnée, même si cela a été fait à l’intérieur du terminal en utilisant apt-get.

Si vous installez le gestionnaire de paquets Synaptic, qui peut être installé librement à partir du centre logiciel Ubuntu, il vous suffit d'ouvrir son menu FILE et de choisir l'option "Historique". Vous y trouverez une comptabilité de tous les packages d'applications ajoutés et supprimés, classés par date, quelle que soit la manière dont ils ont été installés ou supprimés.

    
réponse donnée gyropyge 25.09.2014 - 13:51
la source
1

Il existe en effet un script "officiel" pkginstall.sh qui peut le faire. Suivez les instructions de la documentation officielle . En bref, téléchargez le script à partir du lien ci-dessus, assurez-vous qu'il est exécutable, puis exécutez-le avec:

~/pkginstalls.sh

Cela créera le fichier pkginstalls.txt dans votre répertoire personnel contenant tous les paquets installés triés par date.

BTW, c'est le contenu du script:

#!/bin/bash
#pkginstalls.sh
#creates text file with a list of all packages installed by date

#first append all info from archived logs

i=2
mycount=$(ls -l /var/log/dpkg.log.*.gz | wc -l)
nlogs=$(( $mycount + 1 ))

while [ $i -le $nlogs ]
do
if [ -e /var/log/dpkg.log.$i.gz ]; then
zcat /var/log/dpkg.log.$i.gz | grep "\ install\ " >> $HOME/pkgtmp.txt
fi
i=$(( $i+1 ))

done

#next append all info from unarchived logs

i=1
nulogs=$(ls -l /var/log/dpkg.log.* | wc -l)
nulogs=$(( $nulogs - $nlogs + 1 ))
while [ $i -le $nulogs ]
do
if [ -e /var/log/dpkg.log.$i ]; then
cat /var/log/dpkg.log.$i | grep "\ install\ " >> $HOME/pkgtmp.txt
fi
i=$(( $i+1 ))

done

#next append current log

cat /var/log/dpkg.log | grep "\ install\ " >> $HOME/pkgtmp.txt

#sort text file by date

sort -n $HOME/pkgtmp.txt > $HOME/pkginstalls.txt

rm $HOME/pkgtmp.txt

exit 0
    
réponse donnée Ron 04.05.2015 - 12:35
la source

Lire d'autres questions sur les étiquettes