O esquema de diretório tudo-em-usr do Debian (usrmerge) quebra o dpkg -S. Gambiarra?

O esquema de diretório tudo-em-usr do Debian (usrmerge) quebra o dpkg -S. Gambiarra?

Estou acostumado dpkg -S /path/to/filea descobrir de onde veio algo no Debian. O ~novo"tudo em usr"A política de usrmerge também conhecida como política de usrmerge geralmente quebra isso. Apenas por exemplo:

> 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

Isso é uma droga porque o executável real em execução é /usr/lib/systemd/systemd, então é muito mais provável que eu queira saber de qual pacote veio em qualquer uso do dpkg -S. Existe outro substituto compatível com usrmerge que dpkg -Seu possa usar para rastrear de maneira fácil e confiável um executável de volta ao seu pacote?

Responder1

Não conheço nenhum /usr-merge-aware equivalente a dpkg -S, mas há uma maneira de evitar esse problema: dpkg -Snão precisa de um caminho completo, então

dpkg -S lib/systemd/systemd

e

dpkg -S bin/systemd

lhe dará a(s) resposta(s) que você procura. Se você quiser evitar listar todos os arquivos que correspondem aos padrões fornecidos como substrings, adicione *:

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

Veja tambémdpkg-query: nenhum caminho encontrado correspondente ao padrão /usr/bin/bash, eesta descrição da /usrfusão(escrito pelo dpkgmantenedor) que explica algumas das restrições envolvidas e lista uma série de dpkgrecursos que são quebrados pela usrmergeabordagem do pacote (incluindo dpkg -S).

informação relacionada