On 22/01/14 04:06, Andreas Beckmann wrote:
Package: ekiga-dbg
Version: 4.0.1-2
Severity: serious
User: debian...@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


--
To UNSUBSCRIBE, email to debian-bugs-rc-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to