Odpowiedzi:
Aby uniknąć przypadkowego cięcia liści, które mogą być czymś, o co prosiłeś, powinieneś zainstalować port_cutleaves
pakiet, a następnie uruchomić sudo port_cutleaves
https://guide.macports.org/#using.common-tasks.keeplean
MacPorts 1.9.0 dodał,sqlite
portdbformat
a MacPorts 2.0.0 porzucił stary flat
format . sqlite
Format portem DB jest domyślny dla nowych instalacji; stare instalacje zaktualizowane do wersji 1.9.x będą nadal korzystać z flat
formatu 1 . Możesz przekonwertować flat
system 1.9.x na sqlite
format, uaktualniając do MacPorts 2.0 lub zmieniając portdbformat
wartość w, /opt/local/etc/macports/macports.conf
a następnie wydając polecenie port jako root (np sudo port installed
.).
Jedną z cech nowego formatu jest to, że śledzi on „wymagane” i „niepotrzebne” instalacje portów. Niewymagany port to taki, który został zainstalowany tylko dlatego, że zależy od niego inny port. leaves
Pseudo-nazwa_portu rozszerza się do wszystkich Niepożądany portów, na których nikt inny zainstalowany portu zależy. Możesz użyć tego do „wyczyszczenia” niepotrzebnych portów, nawet jeśli pierwotnie ich nie odinstalowałeś sudo port uninstall --follow-dependencies portname
(co zrobi, co chcesz, ale tylko jeśli pamiętasz, aby używać go za każdym razem, gdy coś odinstalowujesz).
Przed odinstalowaniem któregokolwiek z nich powinieneś sprawdzić istniejące liście.
port echo leaves
Niektóre wspólne liście ( automake
, gperf
, libtool
, pkgconfig
) są w czasie budowy zależności typowych portów, więc może chcesz „żądanie” je ( sudo port setrequested port1 port2 port3 …
), aby uniknąć ich odinstalowanie prostu musiał ponownie zainstalować je później.
Możesz całkiem łatwo odinstalować pozostałe liście:
sudo port uninstall leaves
Uwaga: przed przycięciem liści możesz również odinstalować stare wersje portów, które nie są już „aktywne”. Może to ujawnić kilka dodatkowych liści (tzn. Portów, które są zależnościami portów, które są zainstalowane, ale nieaktywne):
sudo port uninstall inactive
W Przewodniku MacPorts znajduje się kilka sekcji, w których opisano również proces odinstalowywania niepotrzebnych portów.leaves
while sudo port uninstall leaves; do :; done
aby to zautomatyzować.
sudo port uninstall --follow-dependents portname
jest niepoprawny, ponieważ --follow-dependents
„rekurencyjnie odinstaluje wszystkie porty zależne od określonego portu”. Poprawna jest tutaj opcja --follow-dependencies
, która „rekurencyjnie odinstaluje wszystkie porty, od których zależał określony port. Nie spowoduje to odinstalowania zależności oznaczonych jako żądane lub posiadających inne zależności”.
Deinstalacja odinstaluje zainstalowany port.
%% sudo port uninstall vile Note
Aby również rekurencyjnie odinstalować porty, od których zależy dany port, użyj
‑‑follow‑dependencies
flagi. Nie spowoduje to odinstalowania zależności oznaczonych jako żądane lub posiadających inne zależności.Aby rekurencyjnie odinstalować wszystkie porty zależne od danego portu przed odinstalowaniem samego portu, użyj
‑‑follow‑dependents flag
.Jeśli port jest zależny od innego zainstalowanego portu, odinstalowanie go nie usunie, chyba że najpierw usuniesz zależne porty. Aby zastąpić to zachowanie, użyj przełącznika -f (force). To oczywiście złamie osoby na utrzymaniu. Nie wymuszaj odinstalowywania portów, chyba że wiesz, co robisz.
%% sudo port -f uninstall vile
Zwróć uwagę na główne zastrzeżenie w ostatnim akapicie. Zależności są dokładnie takie - zależności - a różne aplikacje mogą (będą) wymagać tych samych zależności.
‑‑follow‑dependencies
vs ‑‑follow‑dependents
.; cytowany fragment opisuje oba, ale tylko pierwsze odnosi się do pytania
Polecenie usunięcia portu i jego elementów zależnych to:
sudo port uninstall foo --follow-dependents
Jeśli jednak deinstalowany port ma zależności, nie zostanie odinstalowany bez -f
flagi (wymuś).
Oczywiście powinieneś zacząć od przeczytania Przewodnika MacPorts, w szczególności w sekcji Przewodnika dezinstalacji.
W katalogu contrib MacPorts znajduje się również skrypt o nazwie port_cutleaves, który można uruchomić, aby usunąć niepotrzebne zależności: http://trac.macports.org/browser/contrib/ . Poprosi Cię o każdy port, który ma zostać odinstalowany i pozwoli zachować niektóre, jeśli chcesz.
Napisałem kilka skryptów do automatyzacji czyszczenia portów: https://github.com/vasi/macports-tools
Skrypt „macportsfoster” wyświetli listę wszystkich portów niewymaganych przez nic na liście żądań, uporządkowany w taki sposób, że „port dezaktywuj $ (macportsfoster)” usunie je wszystkie za jednym razem.
Myślę, że inne odpowiedzi i --follow-dependents
flaga nie rób tego, co chcesz. Jeśli zainstalujesz A
i A
wymaga B
, to dzięki wspaniałym systemom zarządzania pakietami B
zostanie dla Ciebie zainstalowany. Możesz odinstalować, B
a --follow-dependents
flaga będzie wiedzieć i usunąć A
. Ale co, jeśli odinstalujesz A
, co jest bardziej prawdopodobne, ponieważ A
to, co ręcznie zainstalowałeś w pierwszej kolejności? W takim przypadku B
pozostaje w tyle.
Jeśli używasz fink, pakiet debfoster jest zaprojektowany do czyszczenia systemu i usuwania nieużywanych zależności.
Debfoster pomoże ci pozbyć się pakietów (na przykład bibliotek) pozostawionych w systemie, gdy program, który tego wymagał, został usunięty lub uaktualniony do wersji, która nie ma zależności.
Chociaż debfoster
nie będzie działać na MacPorts, wydaje się, że istnieją porty debfoster
, na przykład portsfoster
, chociaż wydaje się, że został wycofany ...
Być może obecnie nie istnieje żadne rozwiązanie dla MacPorts.
apt
systemie używanym przez Debiana. Nie używam MacPorts, ale zrobiłem fink install debfoster
i działało to dobrze dla mnie.
apt
systemem i nie używa deb
plików. Idea MacPorts jest związana z portami FreeBSD lub pkgsrc NetBSD, ale implementacja jest zupełnie inna.