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é).
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
.
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 aptitude dans la page de manuel aptitude.
Il existe un simple moyen de voir la date d’installation de tous les paquets. 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.
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
}
EDIT
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?
Utilisez les journaux 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 "
Utilisez sort
pour vous assurer de bien classer selon le 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
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
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.
Il existe en effet un script 'officiel' pkginstall.sh
qui peut le faire. Suivez les instructions dans le 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 fichier pkginstalls.txt
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
[RÉPONSE À LA QUESTION RÉELLE], Oui, il existe un moyen simple 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.