El esquema de directorio de Debian todo en usr (usrmerge) rompe dpkg -S. ¿Solución alterna?

El esquema de directorio de Debian todo en usr (usrmerge) rompe dpkg -S. ¿Solución alterna?

Estoy acostumbrado dpkg -S /path/to/filea descubrir de dónde vino algo en Debian. El ~ nuevo"todo-en-usr"También conocida como política de fusión, a menudo rompe esto. Por sólo un ejemplo:

> dpkg -S /bin/systemd
systemd: /bin/systemd
> readlink -f /bin/systemd
/usr/lib/systemd/systemd
> dpkg -S /usr/lib/systemd/systemd
dpkg-query: no path found matching pattern /usr/lib/systemd/systemd

Esto apesta porque el ejecutable real que se ejecuta es /usr/lib/systemd/systemd, por lo que es mucho más probable que quiera saber de qué paquete proviene en un uso determinado de dpkg -S. ¿Existe otro sustituto compatible con usrmerge que dpkg -Spodría utilizar para rastrear de manera fácil y confiable un ejecutable hasta su paquete?

Respuesta1

No conozco ningún /usrequivalente a merge-aware dpkg -S, pero hay una manera de evitar este problema: dpkg -Sno necesita una ruta completa, por lo que

dpkg -S lib/systemd/systemd

y

dpkg -S bin/systemd

le dará la(s) respuesta(s) que está buscando. Si desea evitar enumerar todos los archivos que coinciden con los patrones dados como subcadenas, agregue *:

dpkg -S '*lib/systemd/systemd' '*bin/systemd'

Ver tambiéndpkg-query: no se encontró ninguna ruta que coincida con el patrón /usr/bin/bash, yesta descripción de la /usrfusión(escrito por el dpkgmantenedor) que explica algunas de las restricciones involucradas y enumera una serie de dpkgcaracterísticas que no se cumplen con el usrmergeenfoque del paquete (incluido dpkg -S).

información relacionada