On Fri, Jun 11, 2004 at 12:39:16AM -0400, Adam Aube wrote: > Yet when I add the checksum, I get the same result: > > /var/lib/dpkg/info# cat xserver-common.conffiles > /etc/X11/xserver/SecurityPolicy > /etc/X11/Xwrapper.config > > /var/lib/dpkg/info# md5sum /etc/X11/Xwrapper.config > dd876d1ea24b7d78725699b82afb2c68 /etc/X11/Xwrapper.config > > /var/lib/dpkg/info# head -2 xserver-common.md5sums > dd876d1ea24b7d78725699b82afb2c68 etc/X11/Xwrapper.config > 5e63f298721bdd4062d3c66967df99ba etc/X11/xserver/SecurityPolicy That's not where you're supposed to add the checksum. These aren't conffiles, though they share the use of MD5 checksums to detect changes. Please review the Debian X FAQ[1], which covers this information in exhaustive detail. *) How do the XFree86 packages manage their non-conffile configuration files like /etc/X11/X, /etc/X11/Xwrapper.config, and /etc/X11/XF86Config-4? ("Conffile" is a Debian term for a configuration file that is shipped as part of a package's payload. Non-conffile configuration files are either not handled by the package system at all, or are created and removed by a package's maintainer scripts.) The method of non-conffile configuration file management that the Debian XFree86 packages used from approximately version 4.0.1-9 to 4.2.1-9 unfortunately proved to be too confusing for many users to tolerate. Each of these files has some corresponding state information in /var/lib/xfree86. The .md5sum files contain MD5 checksums, and the .roster files contain a list of packages that might write a new version of the configuration file. The Xwrapper.config and XF86Config-4 files' checksums are based upon their file contents. /etc/X11/X is a symbolic link, so its checksum is based on the output of the "readlink" command when run against that file. The checksums are stored in /var/lib/xfree86, and use the basename of the corresponding configuration file with the suffix ".md5sum". The post-installation scripts of the xserver-common, xserver-xfree86, and xserver-xfree86-dbg packages will not overwrite the aforementioned non-conffile configuration files if *any* of the following conditions is met: - the configuration file does not exist - the configuration file's checksum file does not exist - the configuration file's stored checksum does not match the one calculated when the post-installation script runs If *none* of the foregoing conditions are met, the configuration file is automatically updated, and if it has changed, its new MD5 checksum is written to the appropriate location in /var/lib/xfree86. The roster file is used simply to keep track of when it is safe to remove a non-conffile configuration file on package purge. As each package that is listed in a configuration file's roster is purged, that package's name is removed from the roster. When the last package name is removed, one final comparison between the configuration file's MD5 sum and the stored MD5 checksum is made, just as with the case when a configuration file is to be overwritten. If the same conditions are met under which the file would be rewritten (it exists, the checksum file exists, etc.), the file is removed. In any case, when the last package listed in a configuration file's roster is removed, the stored checksum file is removed. Therefore it is possible for a modified configuration file to remain on the system after all packages interested in potentially writing to it have been removed, and even their roster and checksum files are gone. This is regarded as the correct behavior because, by modifying the configuration file, the user has expressed his or her desire to have the packaging system abandon control of the file. It is expected that the XFree86 3.x Debian packages will be updated to work as above but as of this writing they retain the previous behavior, which attempts to use debconf markers to ascertain whether the /etc/X11/XF86Config file has been customized by the user. People writing installers for the Debian OS should note that pre-configuration of the XFree86 X server is now as simple as creating an /etc/X11/X symlink and /etc/X11/XF86Config file before installing the xserver-xfree86 package. The presence of these files causes the question priority of the package's debconf questions to be capped at "medium"; the files' existence is regarded as defining a "reasonable default" to the debconf questions (see debconf(7)). Therefore, setting the DEBIAN_PRIORITY environment variable to "high" will bypass the asking of all X server-related debconf questions, and the existence of the /etc/X11/X and /etc/X11/XF86Config-4 files in the absence of stored checksum files will prevent them from being overwritten by maintainer scripts. *) I've customized my /etc/X11/X, /etc/X11/Xwrapper.config, and/or /etc/X11/XF86Config-4 files so the packages don't automatically update them anymore. I'd like them automatically managed again, though; how can I achieve that? Please be aware that your local customizations will be *LOST* if you do this! Don't say you weren't warned... You can "trick" the packages into thinking that the versions of the configuration files on disk were written by them by replacing the MD5 checksum that they have associated with the file. /etc/X11/X is a bit of a special case because it is a symbolic link, not a file with contents. For /etc/X11/X, do the following as root: # readlink /etc/X11/X | md5sum > /var/lib/xfree86/X.md5sum # dpkg-reconfigure xserver-xfree86 (You may have xserver-xfree86-dbg installed instead, in which case, run dpkg-reconfigure on that package instead.) For /etc/X11/XF86Config-4, do the following as root: # md5sum /etc/X11/XF86Config-4 > /var/lib/xfree86/XF86Config-4.md5sum # dpkg-reconfigure xserver-xfree86 (You may have xserver-xfree86-dbg installed instead, in which case, run dpkg-reconfigure on that package instead.) For /etc/X11/Xwrapper.config, do the following as root: # md5sum /etc/X11/Xwrapper.config > /var/lib/xfree86/Xwrapper.config.md5sum # dpkg-reconfigure xserver-common Another way to accomplish the above is to purge the packages from your system and reinstall them, but that can be considerably more disruptive. Nevertheless, here's an example (like the commands above, it must be run as root): # dpkg --purge xserver-common xserver-xfree86 xserver-xfree86-dbg # apt-get install xserver-common xserver-xfree86 xserver-xfree86-dbg Omit one or more of the package names in these commands if you only want to use this method on some of the configuration files. xserver-common deals with /etc/X11/Xwrapper.config, and xserver-xfree86 and xserver-xfree86-dbg share /etc/X11/X and /etc/X11/XF86Config-4. > /var/lib/dpkg/info# export DEBUG_XFREE86_PACKAGE=YES > /var/lib/dpkg/info# export DEBIAN_FRONTEND=readline > /var/lib/dpkg/info# dpkg-reconfigure xserver-common > > [snip] > > xserver-common postinst note: not updating /etc/X11/Xwrapper.config; no > stored checksum available > > Where must I add the checksum so debconf recognizes it? If you follow the instructions, does it work as expected? [1] http://necrotic.deadbeast.net/xsf/XFree86/trunk/debian/local/FAQ file:///usr/share/doc/xfree86-common/FAQ.gz -- G. Branden Robinson | Religious bondage shackles and Debian GNU/Linux | debilitates the mind and unfits it branden@debian.org | for every noble enterprise. http://people.debian.org/~branden/ | -- James Madison
Attachment:
signature.asc
Description: Digital signature