Deinstallieren Sie sicher ein Paket in Gentoo

12

Ich wollte ein bestimmtes Paket in Gentoo deinstallieren und habe die emerge-Manpage durchgesehen. Ich habe die --unmergeOption gefunden:

WARNUNG: Diese Aktion kann wichtige Pakete entfernen! Entfernt alle passenden Pakete. Dadurch werden keine Abhängigkeiten überprüft, sodass möglicherweise Pakete entfernt werden, die für den ordnungsgemäßen Betrieb Ihres Systems erforderlich sind. Die Argumente können Atome oder Ebuilds sein. Verwenden Sie für eine abhängigkeitsbezogene Version von --unmerge --depclean oder --prune .

Ich möchte jedoch prüfen, ob das Paket, das ich deinstallieren möchte, von einem anderen auf dem System installierten Paket benötigt wird. --depcleanund --prunebieten diese Funktionalität nicht an:

  • --depclean Entfernt Pakete, die als Abhängigkeiten installiert wurden, aber nicht mehr benötigt werden
  • --prune "Entfernt alle bis auf die höchste installierte Version eines Pakets von Ihrem System"

Gibt es keine abhängigkeitsprüfende Version von --unmerge?

Daniel Kullmann
quelle

Antworten:

17

Ich glaube nicht, dass es so depcleanfunktioniert, wie Sie es beschrieben haben. Ohne Argumente funktioniert es, aber wenn Sie einen Paketnamen übergeben, funktioniert es wie unmergebei einer zusätzlichen Abhängigkeitsprüfung. Von emerge(1):

Depclean dient als abhängigkeitsbezogene Version von --unmerge. Wenn ein oder mehrere Atome angegeben werden, werden übereinstimmende Pakete ohne umgekehrte Abhängigkeiten entfernt. Verwenden Sie --depcleanzusammen mit --verbose, um umgekehrte Abhängigkeiten anzuzeigen.

Ich verwende immer --depclean( -c), um einzelne Pakete zu entfernen. es funktioniert gut

Michael Mrozek
quelle
6

gentoolkit hilft:

equery d <atom>

Sie können zuerst die Abhängigkeiten überprüfen und dann das Paket entfernen, nachdem Sie die Abhängigkeiten überprüft haben.

Spidey
quelle
5

Ein anderer Weg, um dasselbe Ergebnis zu erzielen (obwohl es sich nicht um einen Befehl handelt, der sich mit der Abhängigkeitsprüfung löst): Entfernt emerge --deselect packagedas Paket aus der Weltdatei . emerge --depcleanWenn Sie jetzt ausführen , wird dieses Paket entfernt, wenn es von keinem anderen Paket benötigt wird.

njsg
quelle
Bedeutet das, dass emerge --depcleanalle Pakete entfernt werden, die mit installiert wurden emerge --oneshot(es sei denn, diese Pakete werden von einem Paket aus der Welt benötigt)?
Daniel Kullmann
@ Danielkullmann ja. Es berechnet den gesamten Abhängigkeitsgraphen und entfernt, was von keinem Paket in der Welt gezogen wird. Mit können emerge --noreplace --selectSie bereits installierte Pakete hinzufügen, ohne sie erneut zu kompilieren.
NJSG
1

Manchmal emerge --unmergegibt diese Warnmeldung:

 * This action can remove important packages! In order to be safer, use
 * `emerge -pv --depclean <atom>` to check for reverse dependencies before
 * removing packages.

Es scheint, dass dies die empfohlene Methode ist, um die Abhängigkeit zu überprüfen, bevor ein Paket entpackt wird. Ich hoffe jedoch immer noch, dass es einen besseren, automatisierten Weg gibt, um dies zu erreichen.

Daniel Kullmann
quelle