diff --git a/debian/preinst b/debian/preinst index 51092f1..de5b1f1 100644 --- a/debian/preinst +++ b/debian/preinst @@ -5,8 +5,19 @@ if [ "$1" = "install" ] || [ "$1" = "upgrade" ]; then msg= for d in bin lib lib32 lib64 libo32 libx32 sbin; do if [ -L "$DPKG_ROOT/$d" ]; then - if [ "$(readlink "$DPKG_ROOT/$d")" != "usr/$d" ]; then - msg="/$d is a symbolic link and not pointing at usr/$d exactly" + target=$(readlink "$DPKG_ROOT/$d") + if [ "$target" != "usr/$d" ]; then + if [ "$d" = lib64 ] && [ "$target" = "usr/lib/#DEB_HOST_MULTIARCH#" ]; then + # Work around https://github.com/systemd/systemd/issues/33919 + echo "Fixing bad /$d symbolic link created by systemd-nspawn." + if [ -d "$DPKG_ROOT/usr/$d" ]; then + ln -sf "usr/$d" "$DPKG_ROOT/$d" + else + rm "$DPKG_ROOT/$d" + fi + else + msg="/$d is a symbolic link and not pointing at usr/$d exactly" + fi elif [ ! -d "$DPKG_ROOT/usr/$d" ]; then msg="/$d is a dangling symbolic link" fi