Réponses:
Pour éviter de couper accidentellement les feuilles que vous avez demandées, vous devez installer le port_cutleavespaquet, puis exécuter sudo port_cutleaves
https://guide.macports.org/#using.common-tasks.keeplean.
MacPorts 1.9.0 a ajouté lesqlite portdbformat et MacPorts 2.0.0 a abandonné l'ancien flatformat . Le sqliteformat de la base de données de port est la valeur par défaut pour les nouvelles installations. les anciennes installations qui ont été mises à niveau vers 1.9.x continueront à utiliser le flatformat 1 . Vous pouvez convertir un flatsystème 1.9.x au sqliteformat en effectuant une mise à niveau vers MacPorts 2.0 ou en modifiant la portdbformatvaleur /opt/local/etc/macports/macports.confpuis en émettant une commande de port en tant que root (par exemple sudo port installed).
Une des caractéristiques du nouveau format est qu’il garde la trace des installations de port «demandées» par rapport aux installations «non demandées». Un port non demandé est un port qui n'a été installé que parce qu'un autre port en dépend. Le leavespseudo-portname s'étend à tous les ports non sollicités dont ne dépend aucun autre port installé. Vous pouvez l'utiliser pour «nettoyer» les ports inutiles, même si vous ne les avez pas désinstallés à l'origine sudo port uninstall --follow-dependencies portname(vous obtiendrez ce que vous voulez, mais seulement si vous pensez l'utiliser chaque fois que vous désinstallez quelque chose).
Vous devriez examiner vos feuilles existantes avant de désinstaller l'une d'elles.
port echo leaves
Quelques feuilles communes ( automake, gperf, libtool, pkgconfig) sont construire temps dépendances de ports communs, de sorte que vous voudrez peut - être « demande » les ( sudo port setrequested port1 port2 port3 …) pour éviter de les désinstaller juste pour les réinstaller plus tard.
Vous pouvez désinstaller les feuilles restantes assez facilement:
sudo port uninstall leaves
Remarque: Avant d'élaguer vos feuilles, vous pouvez également désinstaller les anciennes versions des ports qui ne sont plus «actifs». Cela peut révéler quelques feuilles supplémentaires (par exemple, les ports qui sont des dépendances des ports installés, mais inactifs):
sudo port uninstall inactive
Il y a plusieurs sections dans le Guide MacPorts qui décrivent également le processus d'utilisation leavesde désinstaller les ports non nécessaires.
while sudo port uninstall leaves; do :; doneautomatiser cela.
sudo port uninstall --follow-dependents portnameest incorrect, car --follow-dependents"désinstallera de manière récursive tous les ports qui dépendent du port spécifié". L'option correcte est --follow-dependencies"désinstaller récursivement tous les ports dont dépend le port spécifié. Cela ne désinstallera pas les dépendances marquées comme étant demandées ou ayant d'autres personnes à charge".
L'action de désinstallation désinstallera un port installé.
%% sudo port uninstall vile NotePour désinstaller également de manière récursive les ports dont dépend le port donné, utilisez l'
‑‑follow‑dependenciesindicateur. Cela ne désinstallera pas les dépendances marquées comme étant demandées ou ayant d'autres dépendants.Pour désinstaller de manière récursive tous les ports qui dépendent du port donné avant de désinstaller le port lui-même, utilisez le fichier
‑‑follow‑dependents flag.Si un port est une dépendance d'un autre port installé, la désinstallation ne le supprimera pas, sauf si vous supprimez d'abord le ou les ports dépendants. Pour remplacer ce comportement, utilisez le commutateur -f (force). Cela va évidemment briser les personnes à charge. Ne forcez pas les ports de désinstallation à moins de savoir ce que vous faites.
%% sudo port -f uninstall vile
Notez la mise en garde majeure dans le dernier paragraphe. Les dépendances sont exactement cela - des dépendances - et différentes applications peuvent nécessiter les mêmes dépendances.
‑‑follow‑dependenciesvs ‑‑follow‑dependents; le passage cité décrit les deux, mais seul le premier s'applique à la question
La commande pour supprimer un port et ses dépendants est la suivante:
sudo port uninstall foo --follow-dependents
Toutefois, si le port que vous désinstallez a des personnes à charge, il ne sera pas désinstallé sans l' -findicateur (force).
Bien sûr, vous devriez commencer par lire le Guide MacPorts en consultant plus particulièrement la section du guide de désinstallation.
Il existe également un script dans le répertoire contrib de MacPorts appelé port_cutleaves que vous pouvez exécuter pour supprimer les dépendances inutiles: http://trac.macports.org/browser/contrib/ . Il vous demandera chaque port à désinstaller et vous permettra d'en conserver, si vous le souhaitez.
J'ai écrit quelques scripts pour automatiser le nettoyage du port: https://github.com/vasi/macports-tools
Le script 'macportsfoster' produira une liste de tous les ports non requis par un élément quelconque de la liste demandée, ordonnée de telle sorte que 'le port désactiver $ (macportsfoster)' les supprimera tous d'un coup.
Je pense que les autres réponses, et le --follow-dependentsdrapeau, ne font pas ce que vous voulez. Si vous installez Aet Anécessite B, alors, grâce aux merveilleux systèmes de gestion de paquets, Bsera installé pour vous. Vous pouvez désinstaller Bet le --follow-dependentsdrapeau sera au courant et à supprimer A. Mais que se passe-t-il si vous désinstallez A, ce qui est plus probable, car Aest ce que vous avez manuellement installé en premier lieu? Dans ce cas, Best laissé pour compte.
Si vous utilisez fink, le paquet debfoster est conçu pour nettoyer votre système et supprimer les dépendances inutilisées.
Debfoster vous aidera à vous débarrasser des paquets (les bibliothèques par exemple) de rester sur votre système lorsque le programme qui le nécessitait a été supprimé ou mis à niveau vers une version ne dépendant pas de la dépendance.
Bien que debfostercela ne fonctionne pas pour MacPorts, il semble y avoir des ports de debfoster, par exemple portsfoster, bien qu'il semble avoir été interrompu ...
Peut-être qu’aucune solution n’existe actuellement pour MacPorts.
aptsystème utilisé par Debian. Je n'utilise pas MacPorts, mais j'en ai fait un fink install debfosteret cela a bien fonctionné pour moi.
aptsystème et n'utilise pas de debfichiers. L'idée de MacPorts est liée aux ports FreeBSD ou à NetBSD pkgsrc, mais la mise en œuvre est très différente.