Followup-For: Bug #943874 I can also reproduce this in piuparts in upgrades from buster to bullseye/sid.
Unpacking pure-ftpd-common (1.0.49-1) over (1.0.47-3) ... dpkg: error processing archive /tmp/apt-dpkg-install-DSFTxC/9-pure-ftpd-common_1.0.49-1_all.deb (--unpack): unable to install new version of '/usr/share/doc/pure-ftpd-common/README.Authentication-Modules.gz': No such file or directory Errors were encountered while processing: /tmp/apt-dpkg-install-DSFTxC/9-pure-ftpd-common_1.0.49-1_all.deb In buster you have lrwxrwxrwx 1 root root 16 Jan 28 2019 /usr/share/doc/pure-ftpd -> pure-ftpd-common drwxr-xr-x 2 root root 420 Nov 25 20:28 /usr/share/doc/pure-ftpd-common in sid you have drwxr-xr-x 2 root root 320 Nov 25 20:30 /usr/share/doc/pure-ftpd drwxr-xr-x 2 root root 400 Nov 25 20:30 /usr/share/doc/pure-ftpd-common So there is something not working with the symlink to directory conversion, although the error is different than in the other cases of unhandled symlink to directory conversion I encountered. Quoting the corresponding piuparts bug template: Subject: unhandled symlink to directory conversion: /usr/share/doc/PACKAGE 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: 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. Andreas
pure-ftpd_1.0.49-1.log.gz
Description: application/gzip