Le centre logiciel Ubuntu est capable d'afficher un historique détaillé des packages installés/mis à jour/supprimés en fonction de la date.
/var/log/dpkg.log
n'est maintenu que pendant 12 mois; Je ne connais aucune commande apt- * ou dpkg pour obtenir la date à laquelle un paquet a été installé pour la première fois.)Je pensais que les détails étaient assez inutiles, à moins que vous ne vouliez savoir exactement quels changements ont été apportés au système à un jour et à une heure spécifiques, j'ai senti que les étapes que j'avais suivies pour découvrir ces informations méritaient d'être documentées:
J'ai exécuté strace -e trace=open -f -o usc software-center
Pour obtenir une liste de tous les fichiers ouverts par le centre logiciel. Ensuite, je l'ai filtré comme ça.
cat usc| grep -oP '(?<=open\(").*(?=",)' |egrep -v '\.(so\.([0-9]|cache)|so|pyc|mo|py|png|svg)$'|egrep -v '/usr/lib/(python2.7|x86|girepo)'| egrep -v '/usr/share/(icons|themes)' |egrep -v '/etc/fonts'|egrep -v '(screenshots|reviews)\.ubuntu\.com' |egrep -v fontconfig |sort -u
pour éliminer tous les fichiers ne contiennent pas de fichiers de données.
Parmi ceux-ci, j'ai trouvé le fichier d'aspect intéressant: ~/.cache/software-center/apthistory.p
Il ressemblait à un fichier python pickle lorsque je l'ai ouvert. En essayant de charger le fichier, j'ai eu l'erreur que softwarecenter.db.history_impl.apthistory
N'a pas été importé. J'ai exécuté la commande suivante pour rechercher les fichiers python qui ont été ouverts et avaient "softwarecenter" sur leur chemin
$cat usc| grep -oP '(?<=open\(").*(?=",)' |grep softwarecenter
et a obtenu un tas de noms de fichiers, y compris /usr/share/software-center/softwarecenter/db/history_impl/apthistory.so
J'ai écrit le script suivant pour lire et traiter le fichier:
#!/usr/bin/python
import sys
import os
import pickle
sys.path.append('/usr/share/software-center')
import softwarecenter.db.history_impl.apthistory
with open(os.path.expanduser('~/.cache/software-center/apthistory.p')) as IFile:
hist=pickle.load(IFile)
print type(hist[0])
print "earliest apt transaction started on:",hist[-1].start_date
print "installed:"
for PackageStr in hist[-1].install:
print PackageStr
print "upgraded:"
for PackageStr in hist[-1].upgrade:
print PackageStr
J'ai trouvé les attributs nécessaires en recherchant la classe dont hist [0] était une instance de: help(softwarecenter.db.history_impl.apthistory.AptTransaction)
. Cela m'a conduit à la classe parent help( softwarecenter.db.history.Transaction)
d'où j'ai compris comment l'utiliser.
Btw même Sudo apt-get install
Ed trucs apparaît ici.
Tout l'historique des packages installés/mis à jour/supprimés se trouve dans /var/log/apt
: nouvelle histoire dans history.log
fichier, ancienne histoire dans les archives, dans history.log.x.gz
des dossiers. Voir l'image ci-dessous pour obtenir ces données sous la forme d'un tableau dans Ubuntu Software Center: