Bug#736307: ekiga-dbg: unhandled symlink to directory conversion: /usr/share/doc/PACKAGE

Eugen Dedu Eugen.Dedu at pu-pm.univ-fcomte.fr
Wed Mar 5 15:59:28 UTC 2014


On 22/01/14 04:06, Andreas Beckmann wrote:
> Package: ekiga-dbg
> Version: 4.0.1-2
> Severity: serious
> User: debian-qa at lists.debian.org
> Usertags: piuparts
>
> Hi,
>
> an upgrade test with piuparts revealed that your package installs files
> over existing symlinks and possibly overwrites files owned by other
> packages. This usually means an old version of the package shipped a
> symlink but that was later replaced by a real (and non-empty)
> directory. This kind of overwriting another package's files cannot be
> detected by dpkg.
>
> This was observed on the following upgrade paths:
>
>    wheezy -> jessie
>
> For /usr/share/doc/PACKAGE this may not be problematic as long as both
> packages are installed, ship byte-for-byte identical files and are
> upgraded in lockstep. But once one of the involved packages gets
> removed, the other one will lose its documentation files, too,
> including the copyright file, which is a violation of Policy 12.5:
> http://www.debian.org/doc/debian-policy/ch-docs.html#s-copyrightfile
>
> For other overwritten locations anything interesting may happen.
>
> Note that dpkg intentionally does not replace directories with symlinks
> and vice versa, you need the maintainer scripts to do this.
> See in particular the end of point 4 in
> http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-unpackphase
>
> It is recommended to use the dpkg-maintscript-helper commands
> 'dir_to_symlink' and 'symlink_to_dir' (available since dpkg 1.17.2)
> to perform the conversion, ideally using d/$PACKAGE.mainstscript.
> See dpkg-maintscript-helper(1) and dh_installdeb(1) for details.
>
>
>>From the attached log (usually somewhere in the middle...):
>
> 1m42.0s ERROR: FAIL: silently overwrites files via directory symlinks:
>    /usr/share/doc/ekiga-dbg/changelog.Debian.amd64.gz (ekiga-dbg) != /usr/share/doc/ekiga/changelog.Debian.amd64.gz (ekiga)
>    /usr/share/doc/ekiga-dbg/changelog.Debian.gz (ekiga-dbg) != /usr/share/doc/ekiga/changelog.Debian.gz (ekiga)
>    /usr/share/doc/ekiga-dbg/changelog.gz (ekiga-dbg) != /usr/share/doc/ekiga/changelog.gz (ekiga)
>    /usr/share/doc/ekiga-dbg/copyright (ekiga-dbg) != /usr/share/doc/ekiga/copyright (ekiga)

Hi Andreas,

I spent much time trying to understand and figure how to fix this bug. 
For now, I think the solution is to:
- put /usr/share/doc/ekiga-dbg as symlink to ekiga
- add preinst, postinst and postrm with the following line:
            dpkg-maintscript-helper dir_to_symlink \
                pathname new-target prior-version package -- "$@"
- add Pre-Depends: dpkg (>= 1.17.5)

I have to test all this, do you agree with the above solution?  Anyway, 
my main concern is: why a so complicated solution for such a minor thing 
(sometimes in the past someone changed the symlink to a directory)?  Is 
there other solution, for ex. just ship an ekiga-dbg without 
/usr/share/doc?  Why not just fix dpkg instead of forcing all related 
packages to add preinst, postinst, postrm etc.?

Kind regards,
-- 
Eugen




More information about the pkg-gnome-maintainers mailing list