On 2024-07-11 12:32:44 -0400, js wrote:
> dpkg-query does not use a partial pathname as a pattern to search.
> 
> Example:
>   => which exiftool
>    /bin/exiftool
>   => dpkg-query --search `which exiftool`
>    dpkg-query: no path found matching pattern /bin/exiftool
>   => dlocate `which exiftool`
>    libimage-exiftool-perl: /usr/bin/exiftool
>   => dpkg-query --search /usr/bin/exiftool
>    libimage-exiftool-perl: /usr/bin/exiftool
>   => /bin/ls -lt /usr/bin/exiftool /bin/exiftool
>    -rwxr-xr-x 1 root root 320936 Feb  2 19:43 /bin/exiftool
>    -rwxr-xr-x 1 root root 320936 Feb  2 19:43 /usr/bin/exiftool

This seems to be the intended behavior. In the dpkg-query(1) man page:

       -S, --search filename-search-pattern...
[...]
           If the first character in the filename-search-pattern is
           none of ‘*[?/’ then it will be considered a substring match
           and will be implicitly surrounded by ‘*’ (as in
           *filename-search-pattern*).

Since your searches start with "/", you are requesting an exact match.

Using realpath solves the issue:

$ dpkg-query --search $(realpath /bin/exiftool)
libimage-exiftool-perl: /usr/bin/exiftool

You could write a small script that does what you want.

-- 
Vincent Lefèvre <[email protected]> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Pascaline project (LIP, ENS-Lyon)

Reply via email to