Marco <m...@dorfdsl.de> writes: > Am 06.10.2023 schrieb Steve Keller <keller.st...@gmx.de>: > > > I have always been sceptical about /usr merge, since all binaries now > > appear in two places, "type sh" in bash gives the strange looking > > /usr/bin/sh where all Uni*ers are strongly used to /bin/sh. But also > > things like the following don't work anymore: > > Historic reasons, they don't exist anymore on current systems. > > > $ dpkg -S $(type -p sh) > > dpkg-query: no path found matching pattern /usr/bin/sh > > That is because /bin is now a symlink to /usr/bin and the file isn't > provided in /usr/bin by the package.
I assume Steve (seemingly multi Un*x user) is aware about the historic reasons and how and why /usr-merge is implemented using symlinks. > > And I don't see a comfortable way around this. > > One way would be to strip off /usr from the string to search. That, of course, doesn't really help $ type -Pa ls /usr/bin/ls /bin/ls $ dpkg -S $(PATH=/bin type -Pa ls) coreutils: /bin/ls $ type -Pa gcc /usr/bin/gcc /bin/gcc $ dpkg -S $(PATH=/bin type -Pa gcc) dpkg-query: no path found matching pattern /bin/gcc because some packages have their binaries in /bin and others in /usr/bin, and likewise with /sbin vs. /usr/sbin, and /lib vs. /usr/lib. But the -a option to bash's 'type' builtin command helps: $ dpkg -S $(type -Pa ls gcc) dpkg-query: no path found matching pattern /usr/bin/ls coreutils: /bin/ls gcc: /usr/bin/gcc dpkg-query: no path found matching pattern /bin/gcc urs