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

Reply via email to