Since many new features were recently added to dpkg, I wanted to suggest a feature which I'd really like to see in Woody. We all agree that the package management system is one of the nicest features of Debian. It's very helpful to use dpkg to find out to which package a file belongs (dpkg -S). However, in many cases, prominent files (e.g. /etc/hosts, /etc/passwd) don't belong to any package at all. This fact is confusing because the files must have been created somehow and it decreases the usefulness of the packagement system.
Two examples illustrate this point: 1. 'dpkg -S /etc/passwd' returns 'dpkg: /etc/passwd not found.' Further investigation shows that this file is created in the postinst script of the base-passwd package. /var/lib/dpkg/info/base-passwd.postinst: if [ ! -e /etc/passwd ] ; then cp /usr/share/base-passwd/passwd.master /etc/passwd fi 2. % dpkg -S /usr/bin/yacc dpkg: /usr/bin/yacc not found. % ll /usr/bin/yacc lrwxrwxrwx 1 root root 22 Jul 23 15:35 /usr/bin/yacc -> /etc/alternatives/yacc % ll /etc/alternatives/yacc lrwxrwxrwx 1 root root 19 Jul 23 15:34 /etc/alternatives/yacc -> /usr/bin/bison.yacc % dpkg -S /usr/bin/bison.yacc bison: /usr/bin/bison.yacc In both cases, the files belong to a package in some way and still 'dpkg -S' doesn't show it. I want all files in /etc to have a proper owner which is shown with dpkg -S. For this, a dynamic mechanism is needed to tell dpkg to which package a file belongs. This is needed because not all files can be part of the package itself, but need to be created at a later time (e.g. in a postinst script). This fexible mechanism, dpkg-registerfile (or whatever it will be called) should take two arguments: the file and the package to which the file belongs. The script could then, similarly to dpkg-divert, put the information in /var/lib/dpkg (The script must also have the capability to remove the information again in case a file is being deleted). Of course, dpkg has to be made aware of this. The examples given above could easily be adapted to comply to this policy: 1. The postinst script of base-passwd should say: if [ ! -e /etc/passwd ] ; then cp /usr/share/base-passwd/passwd.master /etc/passwd dpkg-registerfile /etc/passwd base-passwd fi 2. The solution for this example is to have update-alternatives call dpkg-registerfile Obviously, dpkg-registerfile must also be able to re-register a file or change the package a file belongs to because update-alternatives might change the situation. I don't know how hard this would be to implement. However, since dpkg-divert does something similar, perhaps the necessary hooks are in dpkg anyway. How hard would it be to implement? -- Martin Michlmayr [EMAIL PROTECTED]
pgplrV14z9jB5.pgp
Description: PGP signature