[macos] 모든 종속 항목을 포함하여 Homebrew 패키지 제거 / 제거

나는이 브루의 내가 / 제거하고자 다른 패키지 (일명 의존 패키지를 건너 뛰는 모든 종속성과 함께 제거하는 것이 공식을 캐스 케이 딩 패키지 제거 패키지 관리자 용어로).

예를 들어, 패키지 a에 의존하는 패키지 b&를 제거합니다 c. 여기서 패키지 d는 패키지에 의존합니다 c. 결과는 a&를 모두 제거 b하고 건너 뛰어야 c합니다.

어떻게해야합니까?

불필요한 정크 를 남기지 않고 패키지를 제거하는 방법이 있어야합니다 .



답변

편집하다:

또는 이라는 외부 명령을 사용하여 문제가 해결 된brew rmdepsbrew rmtree 것 같습니다 .

설치하고 사용하려면 다음 명령을 실행하십시오.

$ brew tap beeftornado/rmtree
$ brew rmtree <package>

자세한 내용과 토론은 위의 링크를 참조하십시오.


원래 답변 :

현재로서는 이것을 달성하는 쉬운 방법이없는 것으로 보입니다.

그러나 Homebrew의 GitHub 페이지에 문제를 제기했으며 누군가이 문제 를 해결하기 위해 독점적 인 명령을 추가 할 때까지 임시 해결책을 제안했습니다.

있어 외부 명령 이라는 brew leaves다른 패키지의 의존성이 아닌 모든 패키지를 출력합니다.

당신이 논리적 할 경우 의 출력을 brew leaves하고 brew deps <package>, 당신은 당신이 나중에 수동으로 제거 할 수 있습니다 분리 된 종속 패키지의 목록을 얻을 수 있습니다. 이것과 결합 xargs하면 필요한 것을 얻을 수 있습니다 (추천하지 않음).


편집 : 누군가가 join대신 다음을 사용하여 매우 유사한 솔루션을 제안했습니다 xargs.

brew rm FORMULA
brew rm $(join <(brew leaves) <(brew deps FORMULA))

자세한 내용은 위에서 언급 한 문제에 대한 의견을 참조하십시오 .


답변

여기서 목표는 다른 패키지의 종속성을 손상시키지 않고 지정된 패키지와 해당 종속성을 제거하는 것 입니다. 이 명령을 사용합니다.

brew deps [FORMULA] | xargs brew remove --ignore-dependencies && brew missing | xargs brew install

참고 : @alphadogg의 유용한 의견을 반영하여 편집했습니다.


답변

brew rmtree 전혀 작동하지 않습니다 . 그 문제에 대한 링크에서 실제로 작동하는 rmrec 을 발견 했습니다. 하나님께서는 왜 brew이것을 기본 명령으로 가지고 있지 않은지 아십니다 .

brew tap ggpeti/rmrec
brew rmrec pkgname


답변

@jfmercer 답변 (수정 사항은 의견 이상 필요)을 기반으로합니다.

패키지의 종속성을 제거하십시오 (패키지를 제거하지 않음).

brew deps [FORMULA] | xargs brew remove --ignore-dependencies

패키지 제거 :

brew remove [FORMULA]

누락 된 라이브러리를 다시 설치하십시오.

brew missing | cut -d: -f2 | sort | uniq | xargs brew install

MeldMerge 릴리스를meld 감지 한 후 제거 를 테스트했습니다 .


답변

이 답변을 사용하려면 시스템에 설치하려는 패키지 이름이 포함 된 파일을 작성하고 유지 관리해야합니다. 아직없는 경우 다음 명령을 사용하여 설치하지 않으려는 패키지 이름을 삭제하십시오.

brew leaves > brew_packages

그런 다음 다음 명령을 실행하여 설치되었지만 원치 않는 패키지 및 불필요한 종속성을 모두 제거 할 수 있습니다.

brew_clean brew_packages

brew_cleanhttps://gist.github.com/cskeeters/10ff1295bca93808213d에 있습니다.

이 스크립트는 brew_packages에 지정한 모든 패키지와 모든 종속 항목을 가져 와서 결과와 비교 brew list하여 사용자와이 목록을 확인한 후 원하지 않는 패키지를 제거합니다.

이 시점에서 패키지를 제거 a하려면 brew_packages 파일에서 패키지를 제거한 다음 다시 실행하면 brew_clean brew_packages됩니다. 제거 b되지만 제거 되지는 않습니다 c.


답변

이를 위해 UNIX 파이프를 사용할 수 있습니다

brew deps [FORMULA] | xargs brew rm


답변

다음 스크립트를 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

이제 다음 명령으로 설치하십시오

sudo install brew-purge /usr/local/bin

이제 실행 해

brew purge package

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.
$