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


54

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

J'ai installé plusieurs 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 juste essayé de regarder la liste des fichiers .deb téléchargés, mais cela semble être une façon plutôt rétrograde de le faire (même si cela a fonctionné).

Réponses:


43

Malheureusement, dpkg (le gestionnaire de paquets aptitude fonctionne par dessus) n'enregistre 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 consultant l'horodatage des fichiers écrits dans le répertoire /var/lib/dpkg/info.


4
Si vous utilisez cette approche, veillez à ne vérifier que les horodatages des *.listfichiers, car les autres fichiers sont marqués de la date du package.
Dave

20

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.

Cela montre la date exacte et les paquets qu'aptitude a installés. Pour le configurer, 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.


1
S'il vous plaît poster le lien et comment le mettre en œuvre. Il n'est pas très utile de se référer à un texte manuel.
not2qubit

17

Il existe un moyen simple de voir 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.


2
La cdcommande n'est pas nécessaire si vous utilisez le chemin complet dans la catcommande ...
papukaija

1
Le but de la cdcommande était de se lstrouver dans ce répertoire pour vérifier les fichiers dpkg.log disponibles. Mais une meilleure solution sera en cours d'exécution ls /var/log | grep 'dpkg.log'afin de lister les fichiers journaux. Désolé pour le bazar.
jmarceli

2
ou simplement "grep install /var/log/dpkg.log*"?
Marc Van Daele

1
Hein, je ne savais pas cat | catque tu pouvais faire quelque chose. Mais pourquoi ne pas combiner les deux fichiers en une seule commande? (Ou encore mieux: faites ce que @MarcVanDaele dit.)
mwfearnley

13

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

Cela semble très simple.

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

La source

MODIFIER

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


5
  • Utiliser les logs de 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 "
    
  • Utiliser sortpour assurer une commande appropriée en fonction du temps

    locate dpkg.log | xargs cat {} | grep " install " | sort
    
  • Utilisation tac(marche arrière cat) *, la tête par exemple pour obtenir les dernières 4 entrées

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

Par exemple, 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

1
Pourquoi voudriez-vous utiliser tac+ headau lieu de tail?
Zanna

1
Ça fait longtemps, j'ai oublié pourquoi - mais il est possible qu'il y ait une raison tout à fait valable ... ou peut-être que j'ai eu un moment blond: D
a20

4

Vous pouvez également suivre vos actions précédentes en consultant /var/log/apt/term.log et les fichiers plus anciens term.log.1.gz etc.). Il a des horodatages et complète le journal des messages lors de l'installation.


2

[RÉPONSE À LA QUESTION RÉELLE], Oui, il existe un moyen FACILE de rechercher les paquets installés à une date donnée, même si cela a été fait à l'intérieur du terminal à l'aide d'apt-get.

Si vous installez le gestionnaire de paquets Synaptic, qui peut être installé librement à partir du Centre de logiciel Ubuntu, il vous suffit d'ouvrir son menu FICHIER 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.


2

Il existe en effet un pkginstall.shscript "officiel" 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 un pkginstalls.txtfichier dans votre répertoire personnel contenant tous les packages installés triés par date.

BTW, voici 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.