Hi,
Last week I discovered an issue with dpkg-query -S and the usrmerge
with the phpmyadmin docker container; I proposed a fix for the
phpmyadmin container and it turned out a lot of other containers have
the same pattern and were likewise affected by this (see
https://github.com/docker-library/official-images/pull/14960)
The rootcause of the issue is that dpkg-query -S only supports
searching on the paths that listed in the package; it does not
know/care about symlinks; so with the usrmerge /lib and /usr/lib are
now the same; but some libs install to /lib while others install to
/usr/lib. This causes issues with scripts that rely on dpkg-query -S
to find out the package an installed library belongs to. Especially if
you try to find the package of a dependency with ldd and dpkg-query -S
(as ldd will prefer the /lib entry it finds)
I proposed a workaround/fix for this in
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=848622#27 and I now
have a proof of concept implementation of this.
The idea is simple: if you specify you want to match on realpath (for
now by prefixing the path with "realpath:"); it will search for files
matching the basename of the given path and does an extra check to
only return matches where the realpath of the given path will match
the realpath of the partial match it found.
This way you minimize the number of realpath calls that need to be
done and don't need to hardcode any path mappings into dpkg-query.
I don't think this implementation is particularly pretty (especially
the "realpath:" prefix to trigger it); but this was the easiest way
for me to prototype this.
It is meant as a starting point for the conversation if this is
something you'd consider supporting in dpkg-query; I am happy to make
any changes based on your suggestions.
I have attached the patch; but also have a github repo available:
https://github.com/ederuiter/dpkg/tree/fix/bug-848622-realpath
--
Best regards,
Eric de Ruiter
RnJvbSAyMjRlNWJmNTM0NWQ2ZmRjMmJiNmQ4NjVjNDRhNzVhYzkyYWU0NjJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBFcmljIGRlIFJ1aXRlciA8ZXJpY0B0aGlzaXNkZXZlbG9wbWVu dC5ubD4KRGF0ZTogU2F0LCA4IEp1bCAyMDIzIDEzOjA2OjQ5ICswMjAwClN1YmplY3Q6IFtQQVRD SF0gW1dJUF0gcHJvb2Ytb2YtY29uY2VwdCBpbXBsZW1lbnRhdGluIGZvciByZWFscGF0aCBzdXBw b3J0IGluCiBkcGtnLXF1ZXJ5IC1TIChmaXhlcyAjODQ4NjIyICYgIzg1ODMzMSkKCi0tLQogc3Jj L3F1ZXJ5L21haW4uYyB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiAxIGZpbGUgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9x dWVyeS9tYWluLmMgYi9zcmMvcXVlcnkvbWFpbi5jCmluZGV4IDI0ZGNjYzhjNC4uYzdjZTYwZjRh IDEwMDY0NAotLS0gYS9zcmMvcXVlcnkvbWFpbi5jCisrKyBiL3NyYy9xdWVyeS9tYWluLmMKQEAg LTMzMSw2ICszMzEsNDMgQEAgc2VhcmNob3V0cHV0KHN0cnVjdCBmc3lzX25hbWVub2RlICpuYW1l bm9kZSkKICAgcmV0dXJuIGZvdW5kICsgKG5hbWVub2RlLT5kaXZlcnQgPyAxIDogMCk7CiB9CiAK K3N0YXRpYyBpbnQKK3NlYXJjaGZpbGVfcmVhbHBhdGgoY29uc3QgY2hhciAqZmlsZSkKK3sKKyAg c3RydWN0IGZzeXNfaGFzaF9pdGVyICppdGVyOworICBjaGFyICpyZWFsLCAqcmVzb2x2ZWQsICpu YW1lbm9kZV9yZWFsOworICBzdHJ1Y3QgdmFyYnVmIHBhdGggPSBWQVJCVUZfSU5JVDsKKyAgc3Ry dWN0IGZzeXNfbmFtZW5vZGUgKm5hbWVub2RlOworICBpbnQgZm91bmQgPSAwOworCisgIHZhcmJ1 Zl9yZXNldCgmcGF0aCk7CisgIHZhcmJ1Zl9hZGRfc3RyKCZwYXRoLCAiKi8iKTsKKyAgdmFyYnVm X2FkZF9zdHIoJnBhdGgsIHBhdGhfYmFzZW5hbWUoZmlsZSkpOworICB2YXJidWZfZW5kX3N0cigm cGF0aCk7CisKKyAgcmVhbCA9IHJlYWxwYXRoKGZpbGUsIE5VTEwpOworICBpZiAocmVhbCA9PSBO VUxMKSB7CisgICAgbm90aWNlKF8oInVuYWJsZSB0byBnZXQgcmVhbHBhdGggb2YgJXM7IHJlc3Vs dHMgbWlnaHQgbm90IGJlIGNvbXBsZXRlIiksIGZpbGUpOworICAgIHJldHVybiBmb3VuZDsKKyAg fQorICBpdGVyID0gZnN5c19oYXNoX2l0ZXJfbmV3KCk7CisgIHJlc29sdmVkID0gbWFsbG9jKFBB VEhfTUFYKTsKKyAgd2hpbGUgKChuYW1lbm9kZSA9IGZzeXNfaGFzaF9pdGVyX25leHQoaXRlcikp ICE9IE5VTEwpIHsKKyAgICBpZiAoZm5tYXRjaChwYXRoLmJ1ZixuYW1lbm9kZS0+bmFtZSwwKSkg Y29udGludWU7CisgICAgbmFtZW5vZGVfcmVhbCA9IHJlYWxwYXRoKG5hbWVub2RlLT5uYW1lLCBy ZXNvbHZlZCk7CisgICAgaWYgKG5hbWVub2RlX3JlYWwgPT0gTlVMTCkgeworICAgICAgbm90aWNl KF8oInVuYWJsZSB0byBnZXQgcmVhbHBhdGggb2YgJXM7IHJlc3VsdHMgbWlnaHQgbm90IGJlIGNv bXBsZXRlIiksIG5hbWVub2RlLT5uYW1lKTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChyZWFsLCBu YW1lbm9kZV9yZWFsKSAhPSAwKSBjb250aW51ZTsKKyAgICBmb3VuZCs9IHNlYXJjaG91dHB1dChu YW1lbm9kZSk7CisgIH0KKyAgZnN5c19oYXNoX2l0ZXJfZnJlZShpdGVyKTsKKyAgZnJlZShyZWFs KTsKKyAgZnJlZShyZXNvbHZlZCk7CisgIHZhcmJ1Zl9kZXN0cm95KCZwYXRoKTsKKyAgcmV0dXJu IGZvdW5kOworfQorCiBzdGF0aWMgaW50CiBzZWFyY2hmaWxlcyhjb25zdCBjaGFyICpjb25zdCAq YXJndikKIHsKQEAgLTM1MCw2ICszODcsOSBAQCBzZWFyY2hmaWxlcyhjb25zdCBjaGFyICpjb25z dCAqYXJndikKICAgICBzdHJ1Y3QgZnN5c19uYW1lbm9kZSAqbmFtZW5vZGU7CiAgICAgaW50IGZv dW5kID0gMDsKIAorICAgIGlmIChzdHJuY21wKHRoaXNhcmcsICJyZWFscGF0aDoiLCA5KSA9PSAw KSB7CisgICAgICBmb3VuZCArPSBzZWFyY2hmaWxlX3JlYWxwYXRoKCZ0aGlzYXJnWzldKTsKKyAg ICB9IGVsc2UgewogICAgIGlmICghc3RyY2hyKCIqWz8vIiwqdGhpc2FyZykpIHsKICAgICAgIHZh cmJ1Zl9yZXNldCgmdmIpOwogICAgICAgdmFyYnVmX2FkZF9jaGFyKCZ2YiwgJyonKTsKQEAgLTM3 OCw2ICs0MTgsNyBAQCBzZWFyY2hmaWxlcyhjb25zdCBjaGFyICpjb25zdCAqYXJndikKICAgICAg IH0KICAgICAgIGZzeXNfaGFzaF9pdGVyX2ZyZWUoaXRlcik7CiAgICAgfQorICAgIH0KICAgICBp ZiAoIWZvdW5kKSB7CiAgICAgICBub3RpY2UoXygibm8gcGF0aCBmb3VuZCBtYXRjaGluZyBwYXR0 ZXJuICVzIiksIHRoaXNhcmcpOwogICAgICAgZmFpbHVyZXMrKzsKLS0gCjIuMjUuMQoK
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)