Réponses:
Pour éviter de couper accidentellement les feuilles que vous avez demandées, vous devez installer le port_cutleaves
paquet, 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 flat
format . Le sqlite
format 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 flat
format 1 . Vous pouvez convertir un flat
système 1.9.x au sqlite
format en effectuant une mise à niveau vers MacPorts 2.0 ou en modifiant la portdbformat
valeur /opt/local/etc/macports/macports.conf
puis 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 leaves
pseudo-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 leaves
de désinstaller les ports non nécessaires.
while sudo port uninstall leaves; do :; done
automatiser cela.
sudo port uninstall --follow-dependents portname
est 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 Note
Pour désinstaller également de manière récursive les ports dont dépend le port donné, utilisez l'
‑‑follow‑dependencies
indicateur. 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‑dependencies
vs ‑‑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' -f
indicateur (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-dependents
drapeau, ne font pas ce que vous voulez. Si vous installez A
et A
nécessite B
, alors, grâce aux merveilleux systèmes de gestion de paquets, B
sera installé pour vous. Vous pouvez désinstaller B
et le --follow-dependents
drapeau sera au courant et à supprimer A
. Mais que se passe-t-il si vous désinstallez A
, ce qui est plus probable, car A
est ce que vous avez manuellement installé en premier lieu? Dans ce cas, B
est 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 debfoster
cela 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.
apt
système utilisé par Debian. Je n'utilise pas MacPorts, mais j'en ai fait un fink install debfoster
et cela a bien fonctionné pour moi.
apt
système et n'utilise pas de deb
fichiers. L'idée de MacPorts est liée aux ports FreeBSD ou à NetBSD pkgsrc, mais la mise en œuvre est très différente.