Wie kann ich über die Befehlszeile feststellen, ob ein Paket ein Metapaket ist, möglicherweise über apt-get, aptitude oder apt-cache?
Ich habe versucht:
apt-cache show texlive-full
apt-cache showpkg texlive-full
Ich kann dieses Paket nur durch Lesen des Felds "en-description" als Meta identifizieren.
Gibt es einen automatischeren Weg, der mir eine Ja / Nein-Antwort gibt, oder zumindest ein Feld wie "en-description", das diesem Thema gewidmet ist?
package-management
metapackages
Ciro Santilli ist ein Schauspieler
quelle
quelle
Antworten:
Es gibt keine formale Definition eines Metapakets. Die informelle Definition ist, dass ein Metapaket nur für seine Abhängigkeiten installiert werden soll und keine eigene nützliche Datei enthält.
Sie können ein Metapaket als Paket definieren, das keine Datei enthält. Es gibt keine Möglichkeit, dies aus der Paketdatenbank zu ermitteln. Sie können die Dateidatenbank verwenden und überprüfen, ob das Paket nur Verzeichnisse enthält (viele solcher Pakete enthalten einige Verzeichnisse). Tatsächlich enthalten die meisten Metapakete einige Dateien in
/usr/share/doc/<package name>
: einecopyright
Datei, ein Änderungsprotokoll, manchmal einige weitere. Hier ist eine Annäherung, die ein Metapaket so definiert, dass es nur Dateien in/usr/share/doc/<some directory>
(nicht in Unterverzeichnissen davon) und den führenden Verzeichnissen enthält:Ein anderer Ansatz besteht darin, nach einem Paket-Tag mit zu suchen
debtags
. Es gibt mehrere Tags, die häufig für Metapakete verwendet werden.Ein anderer Ansatz besteht darin, nach Paketen mit einer geringen Größe zu suchen. Jedes Verzeichnis hat eine Größe von 4 kB. Planen Sie daher bei der Auswahl eines Schwellenwerts entsprechend (auch dies ist eine Annäherung).
Nach dem Nachdenken frage ich mich, ob Sie eher virtuelle Pakete als Metapakete meinen. Virtuelle Pakete sind eigentlich keine Pakete, sondern in
Provides:
Feldern verwendete Paketnamen . Sie können sie mit auflistenaptitude search '~v'
. Bei derapt-cache show
Ausführung auf einem wird angezeigt, dass "Versionen aus dem Paket" zcav "nicht ausgewählt werden können, da es sich um ein rein virtuelles Paket handelt". Runningaptitude show
listet die Pakete auf, die es bereitstellen. Eine bequeme Möglichkeit, virtuelle Paketeapt-cache
anzuzeigen, besteht darin, eine Zeile für ein nicht virtuelles Paket und möglicherweise mehrere Zeilen (eine für jeden Anbieter) für ein virtuelles Paket zu drucken. Sie können feststellen, ob das Paket virtuell ist, selbst wenn es einen einzelnen Anbieter gibt weil der Name des Anbieters unterschiedlich ist.quelle
apt-get autoremove
,aptitude (un)markauto
derM
Befehl in der interaktiven Benutzeroberfläche von aptitude.apt-get install texlive-full
,apt-get purge texlive-full; apt-get autoremove
nicht entfernen Sie alle installierten Abhängigkeiten. Ich habe irgendwo gelesen, dass dies daran liegt, dass texlive-full ein Metapaket war und dass dies normales Verhalten eines Metapakets war, aber vielleicht war dies falsch. aptitude hingegen schien die automatisch installierten Abhängigkeiten in Ordnung zu bringen.Sie könnten versuchen, einzutreten
das wird dir eine lange Liste geben und dann
grep
zum Beispiel alle wissenschaftsbezogenen Metapakete mit anzeigenDies wird eine lange Liste zurückgeben (ich habe es hier gekürzt )
Sie können eine beliebige Anzahl von Alternativen für die Wissenschaft verwenden,
KDE
um beispielsweise alleKDE
Metapakete zu finden .Dies ist wahrscheinlich das Beste, was Sie tun können
apt-cache
, aber es sollte die meisten Metapakete, die Sie finden möchten, schnell finden. Wenn nicht genau das gefunden wird, wonach Sie gesucht haben, ist es am einfachsten, im Abschnitt Metapaket in zu suchenSynaptic
.quelle