Hi, Quoting Trent W. Buck (2020-10-20 16:15:07) > Per our IRC chat, I found tarfilter stuff[0] triggers a regression of old > dash bug #606756. > > [0] > https://gitlab.mister-muffin.de/josch/mmdebstrap/commit/465c0564345b456c41016abc6a4b1cb727125961 > > I narrowed it down with this test command: > > git bisect start 0.7.1 0.6.1 > git bisect run ./mmdebstrap --quiet --mode=unshare --variant=apt > --dpkgopt=path-exclude='/usr/share/man/*' stable /dev/null > > ...that relies on mmtarfilter being in $PATH, so you will need mmdebstrap > 0.7.x package installed. > > Attached are some files: > > git-bisect.log - a log of the git bisect > bad.log - a log of the actual error (from dpkg.postinst) > workaround.log - a log of a minimal workaround > tar-t.log - a log of showing the final tarball's contents with > different commits & options > > I think the last one shows a clear difference between tarfilter and dpkg's > built-in exclusions.
I think I understand the problem now. So, the original problem is, that since I introduced the tarfilter command, so that packages do not need to be re-installed when using the dpkg path-excluded option, dash fails to install with the following error when excluding /usr/share/man/*: ln: failed to create symbolic link '/usr/share/man/man1/sh.1.gz.tmp': No such file or directory This makes sense, because indeed the directory /usr/share/man/man1 was excluded and thus the symbolic link cannot be created. The question is, why did this work before? The answer is simple: before the tarfilter, the initial package installation was done with the /usr/share/man/man1 still present, because before tarfilter, mmdebstrap would just extract the full package contents. Only the re-install step would then delete everything according to the path-excluded option. But at that point, the relevant part of the postinst script is not run anymore, so there will not be a failure. Also, re-reading #606756 and also the dash postinst, I see nothing that is a safeguard against a missing /usr/share/man/man1. I think I should open another bug against dash because it clearly fails to install without /usr/share/man/man1 present. Thanks! cheers, josch
signature.asc
Description: signature

