Kann ich für ein bestimmtes Paket herausfinden, warum es installiert ist?
Kann ich also sehen, ob es manuell installiert wurde oder ob es als Abhängigkeit von einem anderen Paket installiert wurde? Oder dass es als Teil der Distribution installiert ist?
apt
software-installation
dependencies
Peter Smit
quelle
quelle
Antworten:
Eine schnelle Lösung besteht darin, den folgenden Befehl in ein Terminal einzugeben:
oder, wenn Sie sich nur für die ultimative Sache interessieren:
Ersetzen Sie $ package durch den Namen des
aptitude
Pakets. Möglicherweise müssen Sie das Paket zuerst installieren .Hier ist die Ausgabe, für die Sie möglicherweise erhalten
aptitude why aspell --show-summary
Für mehr Details würden Sie laufen
aptitude why aspell
. Sie können die folgende Beispielausgabe folgendermaßen lesen: "Sie haben manuell installiertinkscape
, was erfordertlibgtkspell
, was erfordertlibenchantic2a
, was erfordertaspell
". (i
Markierungen kennzeichnen installierte Pakete;A
Markierungen kennzeichnen automatisch installierte Pakete.)Zum Schluss der folgende Befehl
listet die anderen auf Ihrem Computer installierten Pakete auf, die direkt von $ package abhängen . Sie können die
--recurse
Option hinzufügen , alle Pakete aufzulisten, die direkt oder indirekt davon abhängen.quelle
apt-cache rdepends --recurse $package
wahrscheinlich gibt es zu viele pakete. Ich würde--installed
Option hinzufügen , um auf installierte Pakete zu beschränken.-i
Option beschränkt sich auf Pakete im Zusammenhang mit Präabhängigkeit und Abhängigkeit. Möglicherweise wird jedoch ein Paket installiert, da es von einem anderen Paket empfohlen wird. Um solche empfehlungsbezogenen Pakete einzuschließen, würde dies vermutlich die richtigen ergeben:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
Eine kurze Begründung, warum ein bestimmtes Paket installiert wurde, finden Sie, indem Sie den folgenden Befehl in ein terminal (
Applications -> Accessories -> Terminal
) eingeben :Ersetzen Sie durch den Namen des Pakets, an dem Sie interessiert sind. Wenn Sie beispielsweise
aptitude why libgoo-canvas-perl
Folgendes eingeben, wird Folgendes ausgegeben:Dies bedeutet im Grunde, dass das Paket
shutter
in diesem Fall vorgeschlagen wurdelibgoo-canvas-perl
, installiert zu werden. Indemaptitude why shutter
ich dann tippe, kann ich die Abhängigkeitskette hochgehen.Es gibt jedoch eine Einschränkung. Ich stelle oft fest, dass Eignung die plausibelste Erklärung für die Situation findet, die möglicherweise nicht der tatsächliche Fall ist, Ihnen aber dennoch einen Anhaltspunkt gibt, um weiter zu suchen.
In meinem Fall
shutter
schlägt vorlibgoo-canvas-perl
- vorgeschlagene Pakete werden jedoch nicht automatisch standardmäßig installiert. Trotzdem weckt es meine Erinnerung an die "Erfahrung", keine Screenshots bearbeiten zu können, mitshutter
denen ich manuell installieren mussteligbgoo-canvas-perl
Abschließend können Sie feststellen, ob ein Paket automatisch installiert wurde (dh vom Paketverwaltungssystem als obligatorisch festgelegt, indem Sie die Abhängigkeiten und Empfehlungen anderer Pakete prüfen, zu deren Installation Sie aufgefordert haben), indem Sie den folgenden Befehl ausführen.
Dies gibt eine Zeile wie die folgende aus (dritte Zeile der Ausgabe):
Für weitere Informationen führen Sie
info aptitude
(in einem Terminal) oder besuchen Sie die Aptitude-Wiki-SeiteUm herauszufinden, wann ein bestimmtes Paket installiert wurde, gibt es zwei Möglichkeiten:
Install
(beachten Sie die Groß- / Kleinschreibung) suchen, um alle Einträge zur Installation aufzulisten. Dies zeigt jedoch nur die Pakete an, die mit Synaptic installiert wurdenFühren Sie den folgenden Befehl in einem Terminal aus. Dadurch werden die dpkg-Protokolle nach Einträgen im Installationsverlauf durchsucht. Es gibt jedoch eine Höchstgrenze für die Aufbewahrung dieser Protokolle. Wenn das gesuchte Paket also vor langer Zeit installiert wurde, wird es möglicherweise nicht gefunden. Weitere Details hier
quelle
zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Ja, das können Sie, und es ist in der Tat ein ziemlich offensichtlicher Befehl. Vorausgesetzt, Sie haben Aptitude installiert, können Sie einen Terminal-Fenster-Anzeigentyp öffnen:
Das sollte eine Liste von Paketen geben, die von diesem bestimmten Paket abhängen. Wenn es sich um ein manuell installiertes Paket handelt, wird etwa "Es konnte kein Grund für die Installation des Pakets gefunden werden" angezeigt.
quelle
Hier ist eine einfache Methode, die nicht mehr von
aptitude
10.10 abhängt.Grafisch
Öffnen Sie Synaptic und versuchen Sie es zu entfernen.
Wenn ein Dialogfeld angezeigt wird, in dem Sie aufgefordert werden, andere Pakete zu löschen, hängen diese Pakete (rekursiv) davon ab.
Vom Terminal
Wiederum sind die Pakete, die als Ergebnis entfernt würden, alle diejenigen, die (rekursiv) davon abhängen. (Der
-s
Parameter sagtapt-get
, dass das Paket nicht entfernt werden soll.)quelle
y/N
Bestätigungsanforderung, falls Sie tippen-s
. Ich habe jedoch eine Warnung hinzugefügt.