Das Debian-Verzeichnisschema „alles in usr“ (usrmerge) unterbricht dpkg -S. Lösung?

Das Debian-Verzeichnisschema „alles in usr“ (usrmerge) unterbricht dpkg -S. Lösung?

Ich bin es gewohnt, dpkg -S /path/to/fileherauszufinden, woher etwas unter Debian stammt. Das ~new"alles-in-usr"Die sogenannte Usrmerge-Richtlinie unterbricht dies häufig. Nur ein Beispiel:

> 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

Das ist ärgerlich, weil die tatsächlich ausgeführte ausführbare Datei /usr/lib/systemd/systemd ist, sodass ich bei einer bestimmten Verwendung von viel eher wissen möchte, aus welchem ​​Paket sie stammt dpkg -S. Gibt es einen anderen usrmerge-fähigen Ersatz für , den dpkg -Sich verwenden könnte, um eine ausführbare Datei einfach und zuverlässig zu ihrem Paket zurückzuverfolgen?

Antwort1

Mir ist kein /usr-merge-fähiges Äquivalent zu bekannt dpkg -S, aber es gibt eine Möglichkeit, dieses Problem zu vermeiden: dpkg -Sbenötigt keinen vollständigen Pfad, also

dpkg -S lib/systemd/systemd

Und

dpkg -S bin/systemd

gibt Ihnen die Antwort(en), nach der/denen Sie suchen. Wenn Sie vermeiden möchten, dass alle Dateien, die den angegebenen Mustern entsprechen, als Teilzeichenfolgen aufgelistet werden, fügen Sie Folgendes hinzu *:

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

Siehe auchdpkg-query: kein Pfad gefunden, der dem Muster /usr/bin/bash entspricht, Unddiese Beschreibung der /usrZusammenführung(vom dpkgBetreuer geschrieben), in dem einige der damit verbundenen Einschränkungen erläutert und eine Reihe von dpkgFunktionen aufgelistet werden, die durch den usrmergeAnsatz des Pakets nicht funktionieren (einschließlich dpkg -S).

verwandte Informationen