Package: libeccodes-data
Version: 2.30.0-1
Severity: serious
User: debian...@lists.debian.org
Usertags: piuparts

Hi,

during a test with piuparts I noticed your package fails to upgrade from
'sid' to 'experimental'.
It installed fine in 'sid', then the upgrade to 'experimental' fails.

>From the attached log (scroll to the bottom...):

  Preparing to unpack .../libeccodes-data_2.30.0-1_all.deb ...
  Unpacking libeccodes-data (2.30.0-1) over (2.28.0-1) ...
  dpkg: error processing archive 
/var/cache/apt/archives/libeccodes-data_2.30.0-1_all.deb (--unpack):
   unable to install new version of 
'/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/1/codetables/11199.table':
 No such file or directory
  Errors were encountered while processing:
   /var/cache/apt/archives/libeccodes-data_2.30.0-1_all.deb
  E: Sub-process /usr/bin/dpkg returned an error code (1)

This looks like there are some missing dpkg-maintscript-helper
symlink_to_dir calls, since e.g. in sid there is
/usr/share/eccodes/definitions/bufr/tables/0/local/8/78/1 -> 0 a symlink
while in experimental it is directory containing files.
While unpacking, dpkg seems to write a file over a dangling directory
symlink, causing the above error.

Quoting from the unhandled_symlink_to_directory_conversion template:
"""
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:


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:
https://www.debian.org/doc/debian-policy/ch-docs.html#copyright-information

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
https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#details-of-unpack-phase-of-installation-or-upgrade

It is recommended to use the dpkg-maintscript-helper commands
'dir_to_symlink' and 'symlink_to_dir' (available since dpkg 1.17.14)
to perform the conversion, ideally using d/$PACKAGE.maintscript.
See dpkg-maintscript-helper(1) and dh_installdeb(1) for details.
"""

You seem to fall into the "anything interesting may happen" category,
it's the first time that I've seen such an error while caring for
piuparts.


cheers,

Andreas

Attachment: libeccodes-data_2.30.0-1.log.gz
Description: application/gzip

Reply via email to