A voir également:
- Versionner linux subversion
- Linux mint 32 bits - Télécharger - Systèmes d'exploitation
- Diskinternals linux reader - Télécharger - Stockage
- Linux live usb creator - Télécharger - Outils Internet
- Quel linux choisir - Guide
- Backtrack linux - Télécharger - Sécurité
4 réponses
mamiemando
Messages postés
33352
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 novembre 2024
7 804
29 janv. 2010 à 20:32
29 janv. 2010 à 20:32
Ça dépend pas mal de la distribution tu peux voir tous les paquets installés / mis à jour / supprimés dans les logs (/var/log/dpkg.log etc..). Exemple :
On peut imaginer que tu récupères ensuite les noms de paquets avec un cut (là j'ai mis un tail pour n'afficher que la fin) :
Tu peux regarder quels fichiers sont dépaquetés par un paquet en affichant son contenu. Tous les paquets sont téléchargés dans /var/cache/apt/archives. Pour afficher le contenu d'un paquet il suffit d'utiliser la commande dpkg --contents.
Exemple :
Il suffit donc de réinjecter le résultat de la première commande dans la seconde :
Bon la limite de cette approche c'est qu'on ne tient pas compte du numéro de version, et les numéros de versions qu'on récupère dans les logs de dpkg ne sont pas directement réutilisables (le nom du paquet ne porte pas exactement le nom de sa version référencée dans dpkg).
Du coup tu vas faire un dpkg --contents sur des paquets de mises à jour passées (donc un aptitude clean serait souhaitable quand tu as tout vérifié pour vider ton cache). Autre limite, si le paquet n'est pas dans /var/cache/apt/archives ça ne marchera pas non plus.
Bref c'est une piste mais elle n'est pas parfaite et il y a sans doute mieux...
Bonne chance
(mando@aldur) (~) $ grep " installed " /var/log/dpkg.log | tail 2010-01-28 00:31:18 status installed xserver-xorg-video-dummy 1:0.3.2-1 2010-01-28 00:31:18 status installed xserver-xorg-input-mouse 1:1.5.0-1 2010-01-28 00:31:18 status installed xserver-xorg-input-joystick 1:1.5.0-1 2010-01-28 00:31:18 status installed xserver-xorg-input-evdev 1:2.3.2-3 2010-01-28 00:31:19 status installed xserver-xorg-input-wacom 0.10.3+20100109-1 2010-01-28 00:31:19 status installed xserver-xorg 1:7.5+2 2010-01-28 00:31:20 status installed menu 2.1.42 2010-01-28 00:31:21 status installed python-support 1.0.6 2010-01-29 00:49:59 status installed nvidia-kernel-2.6.32-trunk-686 185.18.36-2+2.6.32-5 2010-01-29 00:50:58 status installed nvidia-kernel-2.6.32-trunk-686 185.18.36-2+2.6.32-5
On peut imaginer que tu récupères ensuite les noms de paquets avec un cut (là j'ai mis un tail pour n'afficher que la fin) :
(mando@aldur) (~) $ grep "installed" /var/log/dpkg.log | cut -d' ' -f5 xserver-xorg-input-kbd xserver-xorg-video-nv xserver-xorg-video-dummy xserver-xorg-input-mouse xserver-xorg-input-joystick xserver-xorg-input-evdev xserver-xorg-input-wacom xserver-xorg menu python-support
Tu peux regarder quels fichiers sont dépaquetés par un paquet en affichant son contenu. Tous les paquets sont téléchargés dans /var/cache/apt/archives. Pour afficher le contenu d'un paquet il suffit d'utiliser la commande dpkg --contents.
Exemple :
(mando@aldur) (~) $ dpkg --contents /var/cache/apt/archives/apt-file_2.3.1_all.deb drwxr-xr-x root/root 0 2009-11-29 14:09 ./ drwxr-xr-x root/root 0 2009-11-29 14:09 ./var/ drwxr-xr-x root/root 0 2009-11-29 14:09 ./var/cache/ drwxr-xr-x root/root 0 2009-11-29 14:09 ./var/cache/apt/ drwxr-xr-x root/root 0 2009-11-29 14:09 ./var/cache/apt/apt-file/ drwxr-xr-x root/root 0 2009-11-29 14:09 ./etc/ drwxr-xr-x root/root 0 2009-11-29 14:09 ./etc/apt/ -rw-r--r-- root/root 2098 2009-11-29 14:09 ./etc/apt/apt-file.conf drwxr-xr-x root/root 0 2009-11-29 14:09 ./etc/bash_completion.d/ -rw-r--r-- root/root 748 2009-11-29 14:09 ./etc/bash_completion.d/apt-file drwxr-xr-x root/root 0 2009-11-29 14:09 ./usr/ drwxr-xr-x root/root 0 2009-11-29 14:09 ./usr/share/ drwxr-xr-x root/root 0 2009-11-29 14:09 ./usr/share/doc/ drwxr-xr-x root/root 0 2009-11-29 14:09 ./usr/share/doc/apt-file/ -rw-r--r-- root/root 7145 2009-11-29 14:07 ./usr/share/doc/apt-file/changelog.gz -rw-r--r-- root/root 401 2008-11-15 20:46 ./usr/share/doc/apt-file/README -rw-r--r-- root/root 464 2009-07-30 17:22 ./usr/share/doc/apt-file/copyright drwxr-xr-x root/root 0 2009-11-29 14:09 ./usr/share/apt-file/ -rwxr-xr-x root/root 300 2009-11-29 14:09 ./usr/share/apt-file/is-cache-empty -rwxr-xr-x root/root 6132 2009-11-29 14:09 ./usr/share/apt-file/rapt-file -rw-r--r-- root/root 314 2009-11-29 14:09 ./usr/share/apt-file/apt-file-update.update-notifier -rwxr-xr-x root/root 98 2009-11-29 14:09 ./usr/share/apt-file/do-apt-file-update drwxr-xr-x root/root 0 2009-11-29 14:09 ./usr/share/man/ drwxr-xr-x root/root 0 2009-11-29 14:09 ./usr/share/man/man1/ -rw-r--r-- root/root 787 2009-11-29 14:09 ./usr/share/man/man1/diffindex-download.1.gz -rw-r--r-- root/root 2221 2009-11-29 14:09 ./usr/share/man/man1/apt-file.1.gz -rw-r--r-- root/root 647 2009-11-29 14:09 ./usr/share/man/man1/diffindex-rred.1.gz drwxr-xr-x root/root 0 2009-11-29 14:09 ./usr/bin/ -rwxr-xr-x root/root 10001 2009-11-29 14:09 ./usr/bin/diffindex-download -rwxr-xr-x root/root 19743 2009-11-29 14:09 ./usr/bin/apt-file -rwxr-xr-x root/root 155 2009-11-29 14:09 ./usr/bin/rapt-file -rwxr-xr-x root/root 8762 2009-11-29 14:09 ./usr/bin/diffindex-rred
Il suffit donc de réinjecter le résultat de la première commande dans la seconde :
for x in `grep "installed" /var/log/dpkg.log | cut -d' ' -f5`; do dpkg --contents /var/cache/apt/archives/$x*.deb 2>/dev/null; done
Bon la limite de cette approche c'est qu'on ne tient pas compte du numéro de version, et les numéros de versions qu'on récupère dans les logs de dpkg ne sont pas directement réutilisables (le nom du paquet ne porte pas exactement le nom de sa version référencée dans dpkg).
Du coup tu vas faire un dpkg --contents sur des paquets de mises à jour passées (donc un aptitude clean serait souhaitable quand tu as tout vérifié pour vider ton cache). Autre limite, si le paquet n'est pas dans /var/cache/apt/archives ça ne marchera pas non plus.
Bref c'est une piste mais elle n'est pas parfaite et il y a sans doute mieux...
Bonne chance
gadaana
Messages postés
8
Date d'inscription
jeudi 12 février 2009
Statut
Membre
Dernière intervention
1 février 2010
1 févr. 2010 à 10:16
1 févr. 2010 à 10:16
Bonjour,
Merci pour ta réponse.
J'avais pensé à travailler avec les paquets comme tu me l'indiquais (mais pas de façon aussi clean).
Le seul problème c'est par exemple si je modifie un fichier, par exemple un fichier du cron, je ne peux savoir que je l'ai modifié avec cette méthode. Et je ne peux pas savoir la différence de ce fichier entre deux versions.
Aurais-tu une autre piste?
Merci pour ta réponse.
J'avais pensé à travailler avec les paquets comme tu me l'indiquais (mais pas de façon aussi clean).
Le seul problème c'est par exemple si je modifie un fichier, par exemple un fichier du cron, je ne peux savoir que je l'ai modifié avec cette méthode. Et je ne peux pas savoir la différence de ce fichier entre deux versions.
Aurais-tu une autre piste?
mamiemando
Messages postés
33352
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
12 novembre 2024
7 804
1 févr. 2010 à 10:57
1 févr. 2010 à 10:57
Je pense que tu dois pouvoir le savoir car dpkg-reconfigure peut s'en rendre compte. Au pire tu dépaquetes le paquets dans un fakeroot (c'est une des options de dpkg) et tu compares les fichiers deux à deux avec un diff.
Bonne chance
Bonne chance