georges mariano wrote:

On Sat, 13 Oct 2001 16:01:48 +0200  Patrice Karatchentzeff <[EMAIL PROTECTED]> 
wrote:

PK > Bon courage :-)

Voui ;-)

La solution proposée est évidemment la bonne voie...
Pourquoi apt-get serait-elle une application qui ne saurait faire
des logs alors que des trucs bcp plus "lourds" le font bien
(apache, samba ...) ???

C'est un "problème" de volonté (?) upstream Debian ...


En fait, l'idée a également été évoquée sur la liste debian-dpkg par Joey Hess : http://lists.debian.org/debian-dpkg/2001/debian-dpkg-200109/msg00074.html

Dans les réponses intéressantes, j'ai notamment relevé que Ben Collins a indiqué qu'une branche du CVS de dpkg contient des modifications faites par lui pour le support du logging ( et aussi du format bz2) (http://lists.debian.org/debian-dpkg/2001/debian-dpkg-200109/msg00075.html). D'autres personnes ont également évoqué dans la discussion la possibilité de logger le résultat des scripts d'installation des packages (bien que ça soit AMA un peu différent de l'objectif recherché). Enfin, Adam Heath parle de la possibilité d'utiliser l'option --status-pipe de dpkg (http://lists.debian.org/debian-dpkg/2001/debian-dpkg-200110/msg00005.html). Je suppose qu'il voulait parler de --status-fd n car l'option --status-pipes n'existe pas. Cette option est intéressante et donne par exemple :

[EMAIL PROTECTED]:~$ sudo dpkg --status-fd 2 -i ~/dev/hello_1.3-18_i386.deb 2> dpkg-install.log
Password:
Selecting previously deselected package hello.
(Reading database ... 44385 files and directories currently installed.)
Unpacking hello (from .../fred/dev/hello_1.3-18_i386.deb) ...
Setting up hello (1.3-18) ...

[EMAIL PROTECTED]:~$ cat dpkg-install.log
status: hello: half-installed
status: hello: unpacked
status: hello: unpacked
status: hello: unpacked
status: hello: half-configured
status: hello: installed
[EMAIL PROTECTED]:~$

Il manque ici des infos sur la date d'exécution de la commande, l'utilisateur, mais ça peut servir comme base de départ. Ensuite, on peut faire un wrapper très simple pour dpkg comme ceci :

[EMAIL PROTECTED]:$ cat /usr/bin/dpkg
#!/bin/sh

/usr/bin/dpkg.old --status-fd 2 $* 2>>/var/log/dpkg.log

et de renommer auparavant bien sur l'actuel dpkg en dpkg.old (oui, je sais, ce n'est pas propre du tout par rapport aux principes Debian). Et on logge alors ensuite toutes les modifications des packages quel que soit le frontal utilisé (apt, dselect ou autres).

Pour modifier le format des messages, il "suffit" d'aller modifier le source de dpkg dans la fonction modstatdb_note de dpkg-1.9.17/lib/dbmodify.c avec le format désiré. Pour le source de départ, c'est :
"status: %s: %s\n", pkg->name, statusinfos[pkg->status].name

Ça peut servir comme solution de dépannage, mais certainement pas à long terme, mais je fais confiance aux développeurs Debian pour nous sortir une solution souple, propre et élégante (comme d'habitude).

Mes 0.02¢

Fred

Répondre à