[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Incorrect use of dpkg conffile suffixes and lintian checks



On Sun, Jan 20, 2008 at 03:10:38PM +0100, Michael Biebl wrote:
> Roger Leigh wrote:
>> Hi folks,
>>
>> I noticed earlier today that many packages are creating copies of
>> conffiles in their maintainer scripts with the extension ".dpkg-bak",
>> which is not an extension used or removed by dpkg:
>
> Say you name the file /etc/foo.dpkg-old instead of /etc/foo.dpkg-bak.
> dpkg won't remove this file on purge either, as it doesn't have any 
> reference anymore on /etc/foo.

OK.

> So there is basically no difference here between using *.dpkg-bak or 
> *.dpkg-old. To really cleanup up the backup file, you'd have to do that in 
> postrm/purge. I agree, the wiki should be updated in that regard.

Ack.

> The advantage imho of using *.dpkg-bak is, that you can differentiate which 
> files were created by dpkg and which one by the maintainer scripts.

True.  I have no objection to .dpkg-bak in principle--it would just be
nice if it was made "official".  Currently some scripts are infringing
on the .dpkg-(old|new|dist|tmp)$ namespace, where .dpkg-bak might be
more appropriate, but it would be nice to have some clear guidelines on
which names are appropriate for maintainer scripts to use.

> Maybe it would be a good idea to write a debhelper script (say 
> dh_obsolete), which would create the necessary maintainer scripts.
> This would avoid to copy the scripts from 
> http://wiki.debian.org/DpkgConffileHandling over and over again.

This would be very useful.  It could also robustly add all the
necessary bits to preinst/postrm, so long as you just told it which
version you removed it.  Currently it's all too easy to make a
mistake, particularly if you want to handle aborted installs and
downgrades.

> Regarding run-parts: There is no problem afaik. I quickly tried this:
>
> # mkdir test
> # touch test/foo
> # touch test/foo.dpkg-old
> # touch test/foo.dpkg-bak
> # run-parts --list test
> test/foo

This does appear to be the case (I also tested it).  But, it doesn't
match the documentation, nor the source!

run-parts.c:
 regcomp(&excsre, "^[a-z0-9-].*dpkg-(old|dist|new|tmp)$",


Regards,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linux             http://people.debian.org/~rleigh/
 `. `'   Printing on GNU/Linux?       http://gutenprint.sourceforge.net/
   `-    GPG Public Key: 0x25BFB848   Please GPG sign your mail.


Reply to: