[SCM] Debian packaging for jack-audio-connection-kit branch, master.jackd2, updated. debian/1.9.4+svn3842-2-24-g6b0dbd2

Jonas Smedegaard dr at jones.dk
Mon Mar 8 22:11:23 UTC 2010


On Mon, Mar 08, 2010 at 10:12:53PM +0100, Adrian Knoth wrote:
>On Tue, Mar 02, 2010 at 03:00:56PM +0100, Jonas Smedegaard wrote:
>
>> From a quick glance it looks to me that you are moving around a 
>> conffile in a packaging script.  It is tricky to do so properly - an 
>> example of what might else happen is users getting confusing 
>> questions if they want to preserve or overwrite "their" changes at 
>> package update.
>
>Right.
>
>> When switching from non-confile to conffile (which seems to be the 
>> case here) there are (complex) ways to handle that properly by using 
>> ucf instead and hashing the older default config files.
>
>What do you think about the attached patch? Is it worth the effort or 
>should we just simply stick to the dpkg way?


>diff --git a/debian/jackd.postinst b/debian/jackd.postinst
>index 6cb11b5..9726539 100644
>--- a/debian/jackd.postinst
>+++ b/debian/jackd.postinst
>@@ -7,7 +7,7 @@ CONFIG_FILE=/etc/security/limits.d/audio.conf
> 
> db_get jackd/tweak_rt_limits
> if [ $RET = "true" ]; then
>-    mv ${CONFIG_FILE}.disabled ${CONFIG_FILE} || true
>+    ucf --debconf-ok /usr/share/doc/jackd/examples/audio.conf /etc/security/limits.d/audio.conf
> else
>     # user doesn't want RT prio
>     mv $CONFIG_FILE ${CONFIG_FILE}.disabled || true


System must not depend on /usr/share/doc, so the UCF master file should 
be located somewhere else (and that other location can then be symlinked 
into /usr/share/doc area, that's ok).

Also, it seems you also need to instruct debhelper that it should make 
an exception for the file and not mark it as a conffile which is 
otherwise done automagically for all files below /etc (since dh4, I 
think).



Another more important point is that above is just switching to UCF, not 
fixing the problem that caused me to use UCF: The file was not treated 
as a conffile in the past, and that should be dealt with somehow.

Both DPKG and UCF store a checksum of the file as shipped by the 
package, and if the local file at package update time does not match, it 
is assumed that the local admin have messed with it and a question is 
triggered whether local changes should be preserved or overwritten by 
the file from the package.

DPKG only holds a single checksum which is stored in /var/lib/dpkg/info/ 
where we are not allowed to "adjust" as now where we want to correct the 
error of not registering the file in the past.

UCF can hold multiple checksums and we own the list so can do all sorts 
of tricks.  So we can calculate a checksum of one or more file formats 
released in the past and install with an updated package all theses 
checksums as "pristine", so that if a configfile matches any of our 
checksums then the file is treated as package-installed with no local 
changes, so no question is asked the local admin.  And the opposite: if 
the local admin changed anything then those changes are not silently 
overwritten - we ask nicely if they should be preserved or not.

The backside of UCF is that with all that power also come the mess of 
maintaining it ourselves. Something that is done automagically with 
DPKG.


So...


If interested in UCF then dig deeper: Look for how to adding custom 
checksums.

Otherwise do the dirty thing of making a debconf warning telling the 
local user that we've lost track of editing for that file and we now 
move it aside (idempotently! if already put aside once then don't 
overwrite with potentially our own failed-during-install file!!) and 
install a fresh configfile.  That new file will then be handled as a 
standard conffile and we need not worry about it, just make sure to not 
mess with it any longer.


...or there's the third and even cooler approach: Use Config-Model.  
More info here: http://wiki.debian.org/PackageConfigUpgrade


  - Jonas

-- 
* Jonas Smedegaard - idealist & Internet-arkitekt
* Tlf.: +45 40843136  Website: http://dr.jones.dk/

  [x] quote me freely  [ ] ask before reusing  [ ] keep private
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.alioth.debian.org/pipermail/pkg-multimedia-maintainers/attachments/20100308/4261fffe/attachment.pgp>


More information about the pkg-multimedia-maintainers mailing list