모든 종속 항목을 포함하여 Homebrew 패키지 제거 / 제거
나는이 브루의 내가 다른 패키지에 의존 패키지를 건너 뛰는, 모든 종속성 제거 / 제거 할 것을 패키지를.
예를 들어, 패키지 a
에 의존하는 패키지 b
&를 제거합니다 c
. 여기서 패키지 d
는 패키지에 의존합니다 c
. 결과는 a
&를 모두 제거 b
하고 건너 뛰어야 c
합니다.
어떻게해야합니까?
불필요한 정크 를 남기지 않고 패키지를 제거하는 방법이 있어야합니다 .
편집하다:
또는 이라는 외부 명령을 사용하여 문제가 해결 된brew rmdeps
brew 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
이 답변을 사용하려면 시스템에 설치하려는 패키지 이름이 포함 된 파일을 작성하고 유지 관리해야합니다. 아직없는 경우 다음 명령을 사용하여 설치하지 않으려는 패키지 이름을 삭제하십시오.
brew leaves > brew_packages
그런 다음 다음 명령을 실행하여 설치되었지만 원치 않는 패키지 및 불필요한 종속성을 모두 제거 할 수 있습니다.
brew_clean brew_packages
brew_clean
https://gist.github.com/cskeeters/10ff1295bca93808213d에 있습니다.
이 스크립트는 brew_packages에 지정한 모든 패키지와 모든 종속 항목을 가져 와서 결과와 비교 brew list
하여 사용자와이 목록을 확인한 후 원하지 않는 패키지를 제거합니다.
이 시점에서 패키지를 제거 a
하려면 brew_packages 파일에서 패키지를 제거한 후 다시 실행하면 brew_clean brew_packages
됩니다. 제거 b
되지만 제거 되지는 않습니다 c
.
@jfmercer 답변 (수정 사항은 의견 이상 필요)을 기반으로합니다.
패키지의 종속성을 제거하십시오 (패키지를 제거하지 않음).
brew deps [FORMULA] | xargs brew remove --ignore-dependencies
패키지 제거 :
brew remove [FORMULA]
누락 된 라이브러리를 다시 설치하십시오.
brew missing | cut -d: -f2 | sort | uniq | xargs brew install
MeldMerge 릴리스를meld
감지 한 후 제거 를 테스트했습니다 .
이를 위해 UNIX 파이프를 사용할 수 있습니다
brew deps [FORMULA] | xargs brew rm
다른 답변은 저에게 효과가 없었지만 ( fish
셸에서) 그렇게했습니다 .
brew remove <package>
for p in (brew deps <package>)
brew remove $p
end
brew remove $p
다른 패키지가에 의존하면 실패 하기 때문 입니다 p
.
보다 완전한 Bourne Shell 기능
이미 많은 좋은 답변이 있지만 일부는 오래되었고 완전히 완성 된 것은 없습니다. 특히, 이들 중 대부분은 종속성을 제거하지만 나중에 원래 타겟팅 된 수식을 제거하도록 사용자에게 맡깁니다. 게시 된 한 줄은 한 번에 둘 이상의 수식을 제거하려는 경우 작업하기가 지루할 수 있습니다.
다음은 공식 목록을 가져 와서 각 종속 항목을 제거하고 공식 자체의 모든 복사본을 제거한 다음 누락 된 종속성을 다시 설치하는 Bourne 호환 쉘 기능 (알려진 Bashisms 없음)입니다.
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
}
Homebrew 1.7.4에서 테스트되었습니다.
경고
이것은 내가 테스트 한 모든 표준 수식에서 작동합니다. 현재 통을 다루지는 않지만 표준 공식 (예 : MacVim)과 같은 이름의 통을 추출하려고하면 크게 불평하지 않습니다.
@jfmercer의 답변은 출력 brew missing
이 변경 되었으므로 현재 맥주와 함께 작동하도록 약간 수정해야합니다 .
brew deps [FORMULA] | xargs brew remove --ignore-dependencies && brew missing | cut -f1 -d: | xargs brew install
다음 스크립트를 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.
$
'Programing' 카테고리의 다른 글
C ++ 11 역 범위 기반 for 루프 (0) | 2020.03.13 |
---|---|
파이썬에서 파이썬 코드를 포함하는 문자열을 어떻게 실행합니까? (0) | 2020.03.13 |
Python Argparse : 도움말 텍스트에 줄 바꿈을 삽입하는 방법은 무엇입니까? (0) | 2020.03.13 |
언제 Lazy를 사용해야합니까 (0) | 2020.03.13 |
parseInt ()와 Number ()의 차이점은 무엇입니까? (0) | 2020.03.13 |