Programing

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

lottogame 2020. 3. 13. 08:12
반응형

모든 종속 항목을 포함하여 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

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

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.


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

참고 URL : https://stackoverflow.com/questions/7323261/uninstall-remove-a-homebrew-package-include-all-its-dependencies

반응형