Я привык использовать его, dpkg -S /path/to/file
чтобы выяснить, откуда что-то взялось в Debian. ~новый"всё-в-usr"Политика AKA usrmerge часто нарушает это. Например:
> 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
Это отстой, потому что фактически исполняемый файл запущен в /usr/lib/systemd/systemd, поэтому я, скорее всего, захочу узнать, из какого пакета он пришел в любом конкретном использовании dpkg -S
. Есть ли другая альтернатива, поддерживающая usrmerge, которую dpkg -S
я мог бы использовать для простого и надежного отслеживания исполняемого файла до его пакета?
решение1
Я не знаю ни одного /usr
эквивалента с поддержкой слияния dpkg -S
, но есть способ обойти эту проблему: dpkg -S
не нужен полный путь, поэтому
dpkg -S lib/systemd/systemd
и
dpkg -S bin/systemd
даст вам ответ(ы), которые вы ищете. Если вы хотите избежать перечисления всех файлов, соответствующих заданным шаблонам как подстрокам, добавьте *
:
dpkg -S '*lib/systemd/systemd' '*bin/systemd'
Смотрите такжеdpkg-query: не найден путь, соответствующий шаблону /usr/bin/bash, иэто описание /usr
слияния(написано сопровождающим dpkg
), в котором объясняются некоторые из имеющихся ограничений и перечисляется ряд dpkg
функций, которые нарушаются usrmerge
подходом пакета (включая dpkg -S
).