Odinstaluj / Usuń Pakiet Homebrew zawierający wszystkie jego zależności
MamHomebrew formułę, którą chcę odinstalować / usunąć wraz ze wszystkimi zależnościami, pomijając Pakiety, od których zależą inne pakiety (Alias kaskadowe usuwanie pakietów w języku menedżera pakietów).
np. Odinstaluj pakiet a
który zależy od pakietów b
& c
, gdzie pakiet d
zależy również od pakietu c
. Wynik powinien odinstalować zarówno a
& b
, pomijanie c
.
How can I do to?
Musi istnieć sposób na odinstalowanie pakietu bez pozostawiania zbędnych śmieci .
10 answers
EDIT:
Wygląda na to, że problem został rozwiązany za pomocą zewnętrznego polecenia o nazwie brew rmdeps
lub brew rmtree
.
Aby zainstalować i używać, wydaj następujące polecenia:
$ brew tap beeftornado/rmtree
$ brew rmtree <package>
Zobacz powyższy link, aby uzyskać więcej informacji i dyskusji.
Oryginalna odpowiedź:
Wydaje się, że obecnie nie ma łatwego sposobu, aby to osiągnąć.
Jednakże, ja zgłosiłem problem na stronie GitHub Homebrew i ktoś zasugerował tymczasowe rozwiązanie, dopóki nie dodadzą wyłącznego polecenia, aby rozwiązać ten problem.
Istnieje zewnętrzne polecenie o nazwie brew leaves
, które wypisuje wszystkie pakiety, które nie są zależnościami innych pakietów.
Jeśli zrobisz logiczne oraz na wyjściu brew leaves
i brew deps <package>
możesz po prostu uzyskać listę osieroconych pakietów zależności, które możesz następnie odinstalować ręcznie. Połącz to z xargs
, a dostaniesz to, czego potrzebujesz, chyba (nieprzetestowane, nie licz na to).
EDIT: ktoś właśnie zaproponował bardzo podobne rozwiązanie, używając join
zamiast xargs
:
brew rm FORMULA
brew rm $(join <(brew leaves) <(brew deps FORMULA))
Zobacz komentarz do powyższego zagadnienia aby uzyskać więcej informacji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-29 12:20:38
brew rmtree
nie działa w ogóle . Z linków na ten temat znalazłem rmrec {[5] } który faktycznie działa. Bóg wie, dlaczego brew
nie ma tego jako rodzimego polecenia.
brew tap ggpeti/rmrec
brew rmrec pkgname
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-16 13:59:22
Celem jest usunięcie podanego pakietu i jego zależności Bez łamania zależności innego pakietu. Używam tego polecenia:
brew deps [FORMULA] | xargs brew remove --ignore-dependencies && brew missing | xargs brew install
Uwaga: edytowane, aby odzwierciedlić pomocny komentarz @alphadogg.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-29 23:06:45
Na podstawie odpowiedzi @jfmercer (poprawki potrzebne więcej niż komentarz).
Usuń zależności pakietu (nie usuwa pakietu):
brew deps [FORMULA] | xargs brew remove --ignore-dependencies
Usuń pakiet:
brew remove [FORMULA]
Ponownie zainstaluj brakujące biblioteki:
brew missing | cut -d: -f2 | sort | uniq | xargs brew install
Testowane Odinstalowywanie meld
po odkryciu MeldMerge releases.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-19 17:33:44
Użycie tej odpowiedzi wymaga utworzenia i utrzymania pliku zawierającego nazwy pakietów, które chcesz zainstalować w systemie. Jeśli jeszcze go nie masz, użyj poniższego polecenia i usuń nazwy pakietów, których nie chcesz zachować.
brew leaves > brew_packages
Następnie możesz usunąć wszystkie zainstalowane, ale niechciane pakiety i wszelkie niepotrzebne zależności, uruchamiając następujące polecenie
brew_clean brew_packages
brew_clean
jest dostępny tutaj: https://gist.github.com/cskeeters/10ff1295bca93808213d
Ten skrypt pobiera wszystkie pakiety podane w brew_packages i wszystkie ich zależności i porównuje je z wyjściem {[3] } i ostatecznie usuwa niechciane pakiety po zweryfikowaniu tej listy z użytkownikiem.
W tym momencie, jeśli chcesz usunąć pakiet a
, po prostu usuń go z pliku brew_packages, a następnie uruchom ponownie brew_clean brew_packages
. Usunie b
, ale nie c
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-05 21:03:00
Zapisz następujący skrypt jako brew-purge
#!/bin/bash
#:Usage: brew purge formula
#:
#:Removes the package and all dependancies.
#:
#:
PKG="$1"
if [ -z "$PKG" ];then
brew purge --help
exit 1
fi
brew rm $PKG
[ $? -ne 0 ] && exit 1
while brew rm $(join <(brew leaves) <(brew deps $PKG)) 2>/dev/null
do :
done
echo Package $PKG and its dependancies have been removed.
exit 0
Teraz zainstaluj go za pomocą następującego polecenia
sudo install brew-purge /usr/local/bin
Teraz uruchom to
brew purge package
Przykład użycia gpg
$ brew purge gpg
Uninstalling /usr/local/Cellar/gnupg/2.2.13... (134 files, 11.0MB)
Uninstalling /usr/local/Cellar/adns/1.5.1... (14 files, 597.5KB)
Uninstalling /usr/local/Cellar/gnutls/3.6.6... (1,200 files, 8.9MB)
Uninstalling /usr/local/Cellar/libgcrypt/1.8.4... (21 files, 2.6MB)
Uninstalling /usr/local/Cellar/libksba/1.3.5... (14 files, 344.2KB)
Uninstalling /usr/local/Cellar/libusb/1.0.22... (29 files, 508KB)
Uninstalling /usr/local/Cellar/npth/1.6... (11 files, 71.7KB)
Uninstalling /usr/local/Cellar/pinentry/1.1.0_1... (12 files, 263.9KB)
Uninstalling /usr/local/Cellar/libassuan/2.5.3... (16 files, 444.2KB)
Uninstalling /usr/local/Cellar/libtasn1/4.13... (59 files, 436KB)
Uninstalling /usr/local/Cellar/libunistring/0.9.10... (54 files, 4.4MB)
Uninstalling /usr/local/Cellar/nettle/3.4.1... (85 files, 2MB)
Uninstalling /usr/local/Cellar/p11-kit/0.23.15... (63 files, 2.9MB)
Uninstalling /usr/local/Cellar/gmp/6.1.2_2... (18 files, 3.1MB)
Uninstalling /usr/local/Cellar/libffi/3.2.1... (16 files, 296.8KB)
Uninstalling /usr/local/Cellar/libgpg-error/1.35... (27 files, 854.8KB)
Package gpg and its dependancies have been removed.
$
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-18 04:43:38
Bardziej Kompletna Funkcja Powłoki Bourne ' A
Istnieje już wiele dobrych odpowiedzi, ale niektóre są nieaktualne i żadna z nich nie jest całkowicie kompletna. W szczególności większość z nich usunie zależności, ale nadal pozostawia to do ciebie, aby później usunąć pierwotnie ukierunkowaną formułę. Opublikowane jednowiersze mogą być również żmudne, jeśli chcesz odinstalować więcej niż jedną formułę na raz.
Oto funkcja powłoki kompatybilna z Bourne ' em (bez znanych Bashismów) pobiera listę formuł, usuwa zależności każdej z nich, usuwa wszystkie kopie samej formuły, a następnie ponownie instaluje brakujące zależności.
unbrew () {
local formula
for formula in "$@"; do
brew deps "$formula" |
xargs brew uninstall --ignore-dependencies --force
brew uninstall --force "$formula"
done
brew missing | cut -f2 -d: | sort -u | xargs brew install
}
Został przetestowany na Homebrew 1.7.4.
Caveats
To działa na wszystkich standardowych wzorach, które testowałem. Obecnie nie obsługuje beczek, ale nie będzie głośno narzekać, jeśli spróbujesz rozpakować beczkę o tej samej nazwie, co standardowa formuła (np. MacVim).Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-16 17:19:35
Możesz po prostu użyć do tego unixowego potoku
brew deps [FORMULA] | xargs brew rm
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-12 09:53:20
Inne odpowiedzi mi nie pasowały, ale to (w fish
powłoce):
brew remove <package>
for p in (brew deps <package>)
brew remove $p
end
Ponieważ brew remove $p
nie działa, gdy inny pakiet zależy od p
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-25 01:28:17
Odpowiedź @jfmercer musi być lekko zmodyfikowana, aby działać z bieżącym brewem, ponieważ wyjście brew missing
zmieniło się:
brew deps [FORMULA] | xargs brew remove --ignore-dependencies && brew missing | cut -f1 -d: | xargs brew install
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-22 13:34:26