Ich bin es gewohnt, dpkg -S /path/to/file
herauszufinden, 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 -S
ich 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 -S
benö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 /usr
Zusammenführung(vom dpkg
Betreuer geschrieben), in dem einige der damit verbundenen Einschränkungen erläutert und eine Reihe von dpkg
Funktionen aufgelistet werden, die durch den usrmerge
Ansatz des Pakets nicht funktionieren (einschließlich dpkg -S
).