sourcecode

홈브루 패키지가 설치되어 있는지 감지

copyscript 2023. 4. 19. 23:24
반응형

홈브루 패키지가 설치되어 있는지 감지

시스템에 여러 개의 홈브루 패키지가 설치되어 있는지 여부를 감지하기 위해 셸 스크립트를 작성하려고 합니다.이를 위해 brew 명령어를 사용할 수 있는 방법이 있습니까?

의 종료 코드를 사용해 보았습니다.brew install <formula> --dry-run. 단, 패키지가 없는 경우 패키지가 작성됩니다.

사용할 수 있습니다.

brew ls --versions myformula

각 공식의 설치된 버전을 출력합니다.수식이 인스톨 되어 있지 않은 경우, 출력은 비어 있습니다.

최신 버전의 홈브루를 사용하는 경우brew update(Slaven에게 감사)을 실행하면 됩니다.

if brew ls --versions myformula > /dev/null; then
  # The package is installed
else
  # The package is not installed
fi

단, 각 홈브루 패키지를 확인하는 것만이 아니라 툴의 존재를 확인하는 것이 좋습니다(예를 들어 실행 가능 파일을 검색하는 것).$PATH많은 사람들이 실제로 도구를 설치하는 경향이 있는데, 홈브루는 그 중 하나일 뿐입니다.

# install if we haven't installed any version
brew ls --versions $lib || brew install $lib
# install if we haven't installed latest version
brew outdated $lib || brew install $lib

뭘요?

for pkg in macvim ngrep other needed packages; do
    if brew list -1 | grep -q "^${pkg}\$"; then
        echo "Package '$pkg' is installed"
    else
        echo "Package '$pkg' is not installed"
    fi
done

가장 간단한 2행: 1단계, 설치 여부 확인

$ realpath . || brew install coreutils

그러면 현재 dir의 실제 경로가 인쇄됩니다. 인쇄되지 않으면 설치됩니다.그리고 그것은 심지어 진짜 경로를 찾지 못해도 실패하지 않을 것이다.

2단계, 실제 코드로 호출:

$ realpath ${someDir}

스크립트 및 자동화 사용법에 대해 다음 사항을 확인했습니다.brew bundle --help매우 편리합니다.

실제 번들파일을 사용하지 않는 경우는, 다음의 스니펫이 스크립트로 정상적으로 동작합니다.

brew bundle -v --file=- <<-EOF
brew "mc"
brew "ffmpeg"
brew "wget"
cask "cpuinfo"
cask "intel-power-gadget"
cask "unetbootin"
cask "vlc"
EOF

좋은 점은 패키지가 설치되어 있지 않은지, 오래된지 여부를 자동으로 검출하고 그 후에야 설치됩니다.

업데이트를 원하지 않으면 플래그를 추가합니다.--no-upgrade나는 그것을 넣었다.-v자세한 내용을 원하지만 생략하거나 사용할 수도 있습니다.-q더 조용한 질주를 위해서요.

언급URL : https://stackoverflow.com/questions/20802320/detect-if-homebrew-package-is-installed

반응형