2017-04-25 6 views
1

CI 설치 프로그램에서 이미 설치되어 있는지 여부에 관계없이 지정된 수식의 최신 버전이 설치되었는지 확인하고 싶습니다. 그 접근 방식 함정은 무엇자작용 수식을 업그레이드하거나 설치하십시오.

brew update 
brew install FORMULA || (brew upgrade FORMULA && brew cleanup FORMULA) 

:

내가 현재 같은 것을 사용하고 있습니다? 이 문제에 대한 더 나은 접근 방법이 있습니까 (예 :에 의존하여 FORMULA가 설치되어있는 경우에만 FORMULA가 이미 설치되었는지 여부를 먼저 쿼리하는 방법)?

답변

1

Homebrew 패키지가 아직없는 경우 설치하고 그렇지 않은 경우 업그레이드하려면 가장 좋은 해결 방법은 공식적으로 Homebrew 제품군의 일부인 Homebrew Bundle을 사용하는 것입니다. 그것이 당신을 위해 작동하지 않는 경우, 당신은 자신의 솔루션을 롤 싶지, 당신은 아래의 제안을 참조해야합니다.

brew install이 이미 설치되어있는 패키지 외의 다른 상황이 발생할 수 있습니다. 잘 모르겠어요,하지만 brew install 명령이 실패 1 이외의 종료 상태를 방출처럼은 보이지 않는, 그래서 당신은 두 가지 옵션이 있습니다 : "설치되지"에 대한

  1. 검색 stderr을하고
  2. 에 대해 확인

    function install_or_upgrade { 
        if brew ls --versions "$1" >/dev/null; then 
         HOMEBREW_NO_AUTO_UPDATE=1 brew upgrade "$1" 
        else 
         HOMEBREW_NO_AUTO_UPDATE=1 brew install "$1" 
        fi 
    } 
    
    : 패키지가 명령 brew ls --versions에 설치되어있는 경우
  3. 확인하는

나는이 목적을 위해 사용 본 중에 가장 일반적인 방법은 다른 접근 방식을 사용하여

Homebrew가 각 설치/업그레이드 사이를 업데이트하지 않도록 여러 패키지를 설치하는 경우 HOMEBREW_NO_AUTO_UPDATE=1을 사용하려고합니다.