Bug#814646: vlc: unhandled symlink to directory conversion: /usr/share/doc/PACKAGE, /usr/share/bug/PACKAGE

Andreas Beckmann anbe at debian.org
Mon Feb 15 03:18:02 UTC 2016


On 2016-02-14 11:35, Sebastian Ramacher wrote:
> On 2016-02-13 18:12:27, Andreas Beckmann wrote:
>> 1m58.5s ERROR: FAIL: silently overwrites files via directory symlinks:
>>   /usr/share/bug/libvlccore-dev/control (libvlccore-dev) != /usr/share/bug/libvlccore8/control (libvlccore8)
>>     /usr/share/bug/libvlccore-dev -> libvlccore8
>>   /usr/share/bug/libvlccore-dev/presubj (libvlccore-dev) != /usr/share/bug/libvlccore8/presubj (libvlccore8)
>>     /usr/share/bug/libvlccore-dev -> libvlccore8
>>   /usr/share/doc/libvlccore-dev/NEWS.Debian.gz (libvlccore-dev) != /usr/share/doc/libvlccore8/NEWS.Debian.gz (libvlccore8)
>>     /usr/share/doc/libvlccore-dev -> libvlccore8
>>   /usr/share/doc/libvlccore-dev/changelog.Debian.amd64.gz (libvlccore-dev) != /usr/share/doc/libvlccore8/changelog.Debian.amd64.gz (libvlccore8)
>>     /usr/share/doc/libvlccore-dev -> libvlccore8
>>   /usr/share/doc/libvlccore-dev/changelog.Debian.gz (libvlccore-dev) != /usr/share/doc/libvlccore8/changelog.Debian.gz (libvlccore8)
>>     /usr/share/doc/libvlccore-dev -> libvlccore8
>>   /usr/share/doc/libvlccore-dev/changelog.gz (libvlccore-dev) != /usr/share/doc/libvlccore8/changelog.gz (libvlccore8)
>>     /usr/share/doc/libvlccore-dev -> libvlccore8
>>   /usr/share/doc/libvlccore-dev/copyright (libvlccore-dev) != /usr/share/doc/libvlccore8/copyright (libvlccore8)
>>     /usr/share/doc/libvlccore-dev -> libvlccore8
> 
> debian/libvlccore-dev.maintscript already has
> 
> symlink_to_dir /usr/share/doc/libvlccore-dev /usr/share/doc/libvlccore8 2.2.2-1~
> 
> So what went wrong here?
> 
> The /usr/share/bug/libvlccore-dev part is fixed in git.


OK, let's rerun with some more debugging enabled (DPKG_DEBUG=1 and sed on dpkg-maintscript-helper to have rm -v and mv -v)

  Preparing to unpack .../libvlccore-dev_2.2.2-3_amd64.deb ...
  DEBUG: dpkg-maintscript-helper: Executing /usr/bin/dpkg-maintscript-helper symlink_to_dir in preinst of libvlccore-dev
  DEBUG: dpkg-maintscript-helper: SYMLINK=/usr/share/doc/libvlccore-dev -> /usr/share/doc/libvlccore8 PACKAGE=libvlccore-dev:amd64 LASTVERSION=2.2.2-1~ ACTION=upgrade PARAM=2.2.1-1~deb8u1
  DEBUG: dpkg-maintscript-helper: Executing /usr/bin/dpkg-maintscript-helper symlink_to_dir in preinst of libvlccore-dev
  DEBUG: dpkg-maintscript-helper: SYMLINK=/usr/share/bug/libvlccore-dev -> /usr/share/doc/libvlccore8 PACKAGE=libvlccore-dev:amd64 LASTVERSION=2.2.2-2~ ACTION=upgrade PARAM=2.2.1-1~deb8u1
  Unpacking libvlccore-dev (2.2.2-3) over (2.2.1-1~deb8u1) ...
  Preparing to unpack .../libvlccore8_2.2.2-3_amd64.deb ...
  DEBUG: dpkg-maintscript-helper: Executing /usr/bin/dpkg-maintscript-helper symlink_to_dir in preinst of libvlccore8
  DEBUG: dpkg-maintscript-helper: SYMLINK=/usr/share/doc/libvlccore8 -> /usr/share/doc/vlc-data PACKAGE=libvlccore8:amd64 LASTVERSION=2.2.2-1~ ACTION=upgrade PARAM=2.2.1-1~deb8u1
  '/usr/share/doc/libvlccore8' -> '/usr/share/doc/libvlccore8.dpkg-backup'
  Unpacking libvlccore8 (2.2.2-3) over (2.2.1-1~deb8u1) ...

  Setting up libvlccore8 (2.2.2-3) ...
  DEBUG: dpkg-maintscript-helper: Executing /usr/bin/dpkg-maintscript-helper symlink_to_dir in postinst of libvlccore8
  DEBUG: dpkg-maintscript-helper: SYMLINK=/usr/share/doc/libvlccore8 -> /usr/share/doc/vlc-data PACKAGE=libvlccore8:amd64 LASTVERSION=2.2.2-1~ ACTION=configure PARAM=2.2.1-1~deb8u1
  removed '/usr/share/doc/libvlccore8.dpkg-backup'

  Setting up libvlccore-dev (2.2.2-3) ...
  DEBUG: dpkg-maintscript-helper: Executing /usr/bin/dpkg-maintscript-helper symlink_to_dir in postinst of libvlccore-dev
  DEBUG: dpkg-maintscript-helper: SYMLINK=/usr/share/doc/libvlccore-dev -> /usr/share/doc/libvlccore8 PACKAGE=libvlccore-dev:amd64 LASTVERSION=2.2.2-1~ ACTION=configure PARAM=2.2.1-1~deb8u1
  DEBUG: dpkg-maintscript-helper: Executing /usr/bin/dpkg-maintscript-helper symlink_to_dir in postinst of libvlccore-dev
  DEBUG: dpkg-maintscript-helper: SYMLINK=/usr/share/bug/libvlccore-dev -> /usr/share/doc/libvlccore8 PACKAGE=libvlccore-dev:amd64 LASTVERSION=2.2.2-2~ ACTION=configure PARAM=2.2.1-1~deb8u1


Looks like we have to deal with chained symlinks here:
  /usr/share/doc/libvlccore-dev -> libvlccore8 -> vlc-data

This should work with dpkg-maintscript-helper if you use relative
instead of absolute symlinks. "relative" means the output of
  readlink $SYMLINK
Absolute means the output from
  readlink -f $SYMLINK
must match, which cannot work while switching chained symlinks
to directories.

Don't forget to bump the version.

So for libvlccore-dev.maintscript I'd suggest this (untested):

    symlink_to_dir /usr/share/doc/libvlccore-dev libvlccore8 2.2.2-4~
    symlink_to_dir /usr/share/bug/libvlccore-dev libvlccore8 2.2.2-4~

Relative symlinks require dpkg 1.17.14, but you already have this
in Pre-Depends (probably generated by debhelper).


Andreas



More information about the pkg-multimedia-maintainers mailing list