Antworten:
Um zu vermeiden, dass Blätter versehentlich abgeschnitten werden, sollten Sie das port_cutleavesPaket installieren und dann https://guide.macports.org/#using.common-tasks.keeplean ausführensudo port_cutleaves
MacPorts 1.9.0 fügte das hinzusqlite portdbformat und MacPorts 2.0.0 flatlöschte das alte Format . Das sqlitePort-DB-Format ist die Standardeinstellung für Neuinstallationen. Alte Installationen, die auf 1.9.x aktualisiert wurden, verwenden weiterhin das flatFormat 1 . Sie können eine 1.9.x konvertieren flatSystem auf den sqlitedurch ein Upgrade auf MacPorts 2.0 oder durch Änderung des portdbformatFormatwert in /opt/local/etc/macports/macports.confund dann Ausgeben einen Port - Befehls als Root (z sudo port installed).
Eines der Merkmale des neuen Formats ist, dass es die "angeforderten" im Vergleich zu "nicht angeforderten" Portinstallationen verfolgt. Ein nicht angeforderter Port wurde nur installiert, weil ein anderer Port davon abhängt. Der leavesPseudo-Portname wird auf alle nicht angeforderten Ports erweitert, von denen kein anderer installierter Port abhängt. Sie können diese Option verwenden, um nicht benötigte Ports zu bereinigen, auch wenn Sie sie ursprünglich nicht mit deinstalliert haben sudo port uninstall --follow-dependencies portname(was tun wird, was Sie wollen, aber nur, wenn Sie es bei jeder Deinstallation verwenden).
Sie sollten Ihre vorhandenen Blätter untersuchen, bevor Sie sie deinstallieren.
port echo leaves
Einige gemeinsamen Blätter ( automake, gperf, libtool, pkgconfig) sind build-Zeitabhängigkeiten von gemeinsamen Ports, so dass Sie möglicherweise auf „Anfrage“ , um sie ( sudo port setrequested port1 port2 port3 …) zu deinstallieren , sie zu vermeiden nur zu haben , um sie später erneut zu installieren.
Sie können alle verbleibenden Blätter ganz einfach deinstallieren:
sudo port uninstall leaves
Hinweis: Bevor Sie Ihre Blätter beschneiden, möchten Sie möglicherweise auch alte Versionen von Ports deinstallieren, die nicht mehr aktiv sind. Dies kann einige weitere Blätter aufdecken (dh Ports, die Abhängigkeiten von installierten, aber inaktiven Ports sind):
sudo port uninstall inactive
Es gibt mehrere Abschnitte in dem MacPorts Führer , die auch den Prozess beschreiben , die Verwendung von leavesnicht benötigten Ports zu deinstallieren.
while sudo port uninstall leaves; do :; donezu automatisieren.
sudo port uninstall --follow-dependents portnameist falsch, weil --follow-dependents"alle Ports, die vom angegebenen Port abhängen, rekursiv deinstalliert werden". Die richtige Option lautet hier: --follow-dependencies"Alle Ports, von denen der angegebene Port abhängig ist , werden rekursiv deinstalliert. Abhängigkeiten, die als angefordert gekennzeichnet sind oder andere abhängige Ports haben, werden dadurch nicht deinstalliert."
Die Deinstallationsaktion deinstalliert einen installierten Port.
%% sudo port uninstall vile NoteVerwenden Sie das
‑‑follow‑dependenciesFlag , um die Ports, von denen der angegebene Port abhängt, auch rekursiv zu deinstallieren . Dadurch werden keine Abhängigkeiten deinstalliert, die als angefordert markiert sind oder andere Abhängigkeiten aufweisen.Um alle Ports, die vom angegebenen Port abhängen, rekursiv zu deinstallieren, bevor Sie den Port selbst deinstallieren, verwenden Sie die
‑‑follow‑dependents flag.Wenn ein Port von einem anderen installierten Port abhängt, wird er bei der Deinstallation nur entfernt, wenn Sie zuerst die abhängigen Ports entfernen. Verwenden Sie die Option -f (force), um dieses Verhalten zu überschreiben. Dies wird offensichtlich die Angehörigen brechen. Erzwingen Sie keine Deinstallation von Ports, es sei denn, Sie wissen, was Sie tun.
%% sudo port -f uninstall vile
Beachten Sie die wichtigsten Vorsichtsmaßnahmen im letzten Absatz. Abhängigkeiten sind genau das - Abhängigkeiten - und verschiedene Apps können (werden) die gleichen Abhängigkeiten erfordern.
‑‑follow‑dependenciesvs. ‑‑follow‑dependents; Die zitierte Passage beschreibt beide, aber nur die erste gilt für die Frage
Der Befehl zum Entfernen eines Ports und seiner abhängigen Komponenten lautet:
sudo port uninstall foo --follow-dependents
Wenn der zu deinstallierende Port jedoch abhängige Komponenten hat, wird er nicht ohne das -fFlag (force) deinstalliert .
Beginnen Sie natürlich mit dem Lesen des MacPorts-Handbuchs, indem Sie den Abschnitt Deinstallationshandbuch lesen .
Das Contrib-Verzeichnis von MacPorts enthält auch ein Skript namens port_cutleaves, mit dem Sie nicht benötigte Abhängigkeiten entfernen können: http://trac.macports.org/browser/contrib/ . Sie werden nach jedem zu deinstallierenden Port gefragt und können einige behalten, falls Sie dies möchten.
Ich habe einige Skripte geschrieben, um die Portbereinigung zu automatisieren: https://github.com/vasi/macports-tools
Das 'macportsfoster'-Skript gibt eine Liste aller Ports aus, die von nichts in der angeforderten Liste benötigt werden. Die Reihenfolge ist so, dass' port disable $ (macportsfoster) 'alle Ports auf einmal entfernt.
Ich denke, die anderen Antworten und die --follow-dependentsFlagge tun nicht, was Sie wollen. Wenn Sie installieren Aund Abenötigen B, dann werden dank der wunderbaren Paketverwaltungssysteme Bdiese für Sie installiert. Sie können deinstallieren Bund das --follow-dependentsFlag wird erkannt und entfernt A. Aber was ist, wenn Sie deinstallieren A, was wahrscheinlicher ist, weil Adas, was Sie manuell installiert haben, an erster Stelle steht? In diesem Fall Bbleibt zurück.
Wenn Sie fink verwenden, soll das debfoster- Paket Ihr System bereinigen und nicht verwendete Abhängigkeiten entfernen.
Debfoster hilft Ihnen dabei, Pakete (z. B. Bibliotheken) zu entfernen, die auf Ihrem System zurückbleiben, wenn das erforderliche Programm entfernt oder auf eine Version aktualisiert wurde, die keine Abhängigkeit aufweist.
Während debfosternicht für MacPorts arbeiten, scheint es Ports zu sein debfosterzum Beispiel, portsfosterobwohl es eingestellt zu sein scheint ...
Möglicherweise gibt es derzeit keine Lösung für MacPorts.
aptvon Debian verwendeten System. Ich benutze keine MacPorts, aber ich habe einen gemacht fink install debfosterund es hat gut funktioniert für mich.
aptsystembezogen und verwendet keine debDateien. Die Idee von MacPorts ist mit FreeBSD-Ports oder NetBSD pkgsrc verwandt, aber die Implementierung ist sehr unterschiedlich.