Схема каталога Debian everything-in-usr (usrmerge) нарушает работу dpkg -S. Как обойти?

Схема каталога Debian everything-in-usr (usrmerge) нарушает работу dpkg -S. Как обойти?

Я привык использовать его, 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).

Связанный контент