Isso não está documentado, até onde eu sei, mas um /
líder faz com que dpkg
trate o argumento como um caminho e não como um padrão. Em outras palavras, se você disser para procurar por algo que começa com /
, ele pressupõe que ele deve procurar por um arquivo em um dos pacotes instalados com o caminho exato .
Você pode confirmar isso facilmente com
$ dpkg -S nonmatching
dpkg-query: no path found matching pattern *nonmatching*
$ dpkg -S /nonmatching
dpkg-query: no path found matching pattern /nonmatching
Observe que, no primeiro caso, sem /
, o erro mostra que ele pesquisou *nomatching*
, enquanto com /
pesquisou o caminho exato /nonmatching
. Por exemplo, ele também não consegue encontrar /doc
apesar da existência de diretórios como /usr/share/doc
:
$ dpkg -S /doc
dpkg-query: no path found matching pattern /doc
Embora não encontre nenhuma menção a isso na página do manual, confirmei confirmando a origem. As seguintes linhas são da função searchfiles
definida em querycmd.c
(dpkg 1.17.13)
if (!strchr("*[?/",*thisarg)) {
varbuf_reset(&vb);
varbuf_add_char(&vb, '*');
varbuf_add_str(&vb, thisarg);
varbuf_add_char(&vb, '*');
varbuf_end_str(&vb);
thisarg= vb.buf;
}
Isso adicionará *
em torno do argumento transmitido, a menos que esse argumento comece com /
. Então, isso faz com que dpkg-query
trate qualquer coisa que comece com /
como um caminho absoluto e qualquer coisa que não seja como um padrão a ser correspondido.