Estoy acostumbrado dpkg -S /path/to/file
a 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 -S
podría utilizar para rastrear de manera fácil y confiable un ejecutable hasta su paquete?
Respuesta1
No conozco ningún /usr
equivalente a merge-aware dpkg -S
, pero hay una manera de evitar este problema: dpkg -S
no 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 /usr
fusión(escrito por el dpkg
mantenedor) que explica algunas de las restricciones involucradas y enumera una serie de dpkg
características que no se cumplen con el usrmerge
enfoque del paquete (incluido dpkg -S
).