OK, AFAICS the following happens on the given installation sequence:

1. amule 2.1.1-3 gets installed, and makes the diversions:

   /usr/bin/ed2k -> /usr/bin/ed2k.xmule
   /usr/share/man/man1/ed2k.1.gz -> /usr/share/man/man1/ed2k.xmule.1.gz

   The relevant installed files and symlinks now look like this, with the
   owning packages written on:

   /usr/bin/ed2k -> ed2k.wrapper                       [amule]
   /usr/bin/ed2k.amule                                 [amule-common]
   /usr/bin/ed2k.wrapper                               [amule-common]

   /usr/share/man/man1/ed2k.1.gz -> ed2k.wrapper.1.gz  [amule]
   /usr/share/man/man1/ed2k.amule.1.gz                 [amule-common]
   /usr/share/man/man1/ed2k.wrapper.1.gz               [amule-common]
   /usr/share/man/man1/ed2k.xmule.1.gz -> ed2k.wrapper.1.gz
                                 [amule-common?, diverted from ed2k.1.gz by 
amule]

2. amule and amule-daemon get removed on upgrade to amule-utils/amule-common
   2.1.2-2. However, due to a typo, the two diversions are again made in the
   name of amule:
   
   /usr/bin/ed2k -> /usr/bin/ed2k.xmule
   /usr/share/man/man1/ed2k.1.gz -> /usr/share/man/man1/ed2k.xmule.1.gz

   The current file situation is now this:

   /usr/bin/ed2k.amule                  [amule-utils]
   /usr/bin/ed2k.wrapper                [amule-utils]
   /usr/bin/ed2k.xmule -> ed2k.wrapper  [amule-utils, diverted from ed2k by 
amule]
   
   /usr/share/man/man1/ed2k.1.gz -> ed2k.wrapper.1.gz  [orphan!]
   /usr/share/man/man1/ed2k.wrapper.1.gz               [amule-utils]
   /usr/share/man/man1/ed2k.xmule.1.gz -> ed2k.wrapper.1.gz
                                 [amule-utils, diverted from ed2k.1.gz by amule]

   So, amule-utils has effectively diverted away its own files. Why the
   symlink remains is unknown to me; I wouldn't be surprised if it's a dpkg
   bug somehow. It looks like others have also seen stray /usr/bin/ed2k
   symlinks in the same fashion.
   
3. Upgrading to amule-utils/amule-common 2.1.2-3 tries to clean up the
   mess. First, the /usr/bin/ed2k diversion is removed, which is okay.
   Second, the /usr/share/man/man1/ed2k.1.gz diversion is attempted removed.
   Then, it attempts to remove the orphan symlinks; however, it is too late,
   since the un-diversion already failed (due to the orphan symlinks).

To me, it looks like the fixes are simply being done in the wrong order, but
we'll need some extra logic now that there are both broken and supposedly
right versions out there and hard to tell the difference.

What should be done for /usr/bin/ed2k (and analogously for the man page),
IMO, is:

 1. Check if there is a diversion owned by amule of /usr/bin/ed2k, with,
    say, "dpkg-divert --list /usr/bin/ed2k | grep -q 'by amule$'". If no,
    skip points 2 and 3.
 2. rm -f the /usr/bin/ed2k symlink; if it exists, it's obviously orphan
    (as the only thing that could possibly own /usr/bin/ed2k while there
    is a diversion by amule active, is amule itself, and that package
    has already been removed).
 3. Remove amule's diversion, leaving room for amule-utils' diversion
    later.

Does this sound sane? If nobody objects, I'll probably go ahead with an NMU
in a couple ot days.

/* Steinar */
-- 
Homepage: http://www.sesse.net/


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to