On 2020-11-09 14:20 +0100, Mathieu Malaterre wrote: > Package: dpkg > Version: 1.19.7 > Severity: normal > > It would be nice to clarify the behavior of > dpkg-maintscript-helper/dir_to_symlink with regards to created > symlinks upon purge operation.
It does not do anything special. The package which calls dpkg-maintscript-helper in its maintainer scripts is supposed to ship the symlink, and it will be handled by dpkg, i.e. deleted when the package is removed. > Consider the following maint-script: > > % cat debian/libcharls-dev.maintscript > dir_to_symlink /usr/include/CharLS /usr/include/charls 2.1.0+dfsg-5~ > libcharls-dev > > On Debian/stable (buster), here is what I get: > > % apt policy libcharls-dev > libcharls-dev: > Installed: 2.0.0+dfsg-1 > Candidate: 2.0.0+dfsg-1 > Version table: > *** 2.0.0+dfsg-1 500 > 500 http://deb.debian.org/debian buster/main amd64 Packages > 100 /var/lib/dpkg/status > % test -d /usr/include/CharLS && echo "directory found" > directory found > % sudo dpkg -i libcharls2_2.1.0+dfsg-6_amd64.deb > libcharls-dev_2.1.0+dfsg-6_amd64.deb > (Reading database ... 371484 files and directories currently installed.) > Preparing to unpack libcharls2_2.1.0+dfsg-6_amd64.deb ... > Unpacking libcharls2:amd64 (2.1.0+dfsg-6) over (2.0.0+dfsg-1) ... > Preparing to unpack libcharls-dev_2.1.0+dfsg-6_amd64.deb ... > Unpacking libcharls-dev:amd64 (2.1.0+dfsg-6) over (2.0.0+dfsg-1) ... > dpkg: warning: unable to delete old directory '/usr/include/CharLS': > Directory not empty > Setting up libcharls2:amd64 (2.1.0+dfsg-6) ... > Setting up libcharls-dev:amd64 (2.1.0+dfsg-6) ... > Processing triggers for libc-bin (2.28-10) ... > % test -d /usr/include/CharLS && echo "symlink found" > symlink found > % sudo dpkg --purge libcharls-dev > (Reading database ... 371491 files and directories currently installed.) > Removing libcharls-dev:amd64 (2.1.0+dfsg-6) ... > Purging configuration files for libcharls-dev:amd64 (2.1.0+dfsg-6) ... > % stat /usr/include/CharLS > File: /usr/include/CharLS -> /usr/include/charls > Size: 19 Blocks: 0 IO Block: 4096 symbolic link > Device: 801h/2049d Inode: 14441835 Links: 1 > Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root) > Access: 2020-11-09 14:12:01.145201266 +0100 > Modify: 2020-11-09 14:11:55.881205308 +0100 > Change: 2020-11-09 14:11:55.881205308 +0100 > Birth: - > % test -L /usr/include/CharLS && echo "symlink found" > symlink found % dpkg-deb -c libcharls-dev_2.1.0+dfsg-6_amd64.deb | grep usr/include/CharLS % If you don't ship /usr/include/CharLS in your package, why bother if it is a directory or a symlink? Cheers, Sven

