추출 통을 업그레이드하는 방법이 있습니까? 할 수있는 방법이 brew

모든 업그레이드 할 수있는 방법이 brew cask있습니까? 같은 것 brew cask upgrade?



답변

패키지를 업그레이드하기위한 Bash 스크립트

파스칼 답변에서 영감을

#!/usr/bin/env bash

(set -x; brew update;)

(set -x; brew cleanup;)
(set -x; brew cask cleanup;)

red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`

casks=( $(brew cask list) )

for cask in ${casks[@]}
do
    version=$(brew cask info $cask | sed -n "s/$cask:\ \(.*\)/\1/p")
    installed=$(find "/usr/local/Caskroom/$cask" -type d -maxdepth 1 -maxdepth 1 -name "$version")

    if [[ -z $installed ]]; then
        echo "${red}${cask}${reset} requires ${red}update${reset}."
        (set -x; brew cask uninstall $cask --force;)
        (set -x; brew cask install $cask --force;)
    else
        echo "${red}${cask}${reset} is ${green}up-to-date${reset}."
    fi
done

그것이하는 일

  • 추출 / 양조 통 업데이트, 청소
  • 통 목록을 읽으십시오
  • brew cask info최신 버전을 확인하십시오
  • 사용 가능한 경우 새 버전을 설치하고 모든 이전 버전을 제거하십시오!

출처 : https://gist.github.com/atais/9c72e469b1cbec35c7c430ce03de2a6b

참을성이없는 라이너 :

curl -s https://gist.githubusercontent.com/atais/9c72e469b1cbec35c7c430ce03de2a6b/raw/36808a0544628398f26b48f7a3c7b309872ca2c6/cask_upgrade.sh | bash /dev/stdin

다른 이름으로 저장하여 나중에 /usr/local/bin/cask-upgrade로컬에서 실행할 수 있습니다.cask-upgrade


답변

2017 년 12 월 현재입니다 brew cask upgrade.

https://github.com/Homebrew/brew/pull/3396


답변

자가 맥주 통 업그레이드

나는 이것이 통을 업그레이드하는 가장 좋은 해결책이라고 생각합니다.
출처 : https://github.com/buo/homebrew-cask-upgrade

설치 및 사용법

brew tap buo/cask-upgrade
brew update
brew cu

(선택 사항) 최신으로 표시된 앱을 포함하여 오래된 앱을 강제로 업그레이드합니다.

brew cu --all


답변

다른 답변의 인용에서 알 수 있듯이 현재 업데이트 된 모든 통을 업그레이드 할 수있는 방법이 없습니다.

그러나 대답의 두 번째 부분은 잘못되었습니다 brew upgrade --all. 통을 업그레이드 할 수 없습니다.

모든 통을 업그레이드하는 유일한 방법은 설치된 통의 목록을 가져 와서 변경하지 않은 통을 포함하여 강제로 다시 설치하는 것입니다!

에서 물고기 ,이 같은 것을 할 수 있습니다 :

for app in (brew cask list)
    brew cask install --force $app
end

편집하다:

Atais는 작동하는 스크립트를 작성했습니다. Bash script to upgrade packages .
이것보다는 그의 대답을 찬성하십시오.


답변

로부터 homebrew cask문서 :

homebrew-cask 저장소는 Homebrew Tap이므로 일반 Homebrew 명령을 실행할 때마다 최신 Casks를 풀다운합니다
brew update. 현재, homebrew-cask는 응용 프로그램이 업데이트되었는지 항상 감지 할 수 없습니다. 명령을 통해 강제로 업데이트 할 수 있습니다
brew cask install --force. 우리는 이것을 개선하기 위해 노력하고 있습니다.

다음은 추출 공식과 통을 모두 업그레이드하기에 충분해야합니다.

brew upgrade --all


답변

.bash_profile에 homebrew의 전체 업그레이드 패스를 수행하기 위해 실행 한 내용이 있습니다. 버전이 항상 “최신”이거나 업그레이드되어서는 안되기 때문에 모든 업데이트에 대해 거대한 다운로드가 반복적으로 가져 오지 않도록하기 위해 몇 가지 항목을 “고정”합니다.

boop() {
  brew update && brew upgrade && brew cleanup \
    && cask-upgrade && cask-retire && brew cask cleanup \
      && brew doctor && brew cask doctor
}

__is_pinned() {
  local pinned=";pixate-studio;sketchup;skype;"
  [[ *";${1};"* != "${pinned}" ]] && return 0 || return 1
}

cask-upgrade() {
  while read -r; do
    reply=(${REPLY})
    name="${reply[0]}"
    vers="${reply[1]}"
    if ! __is_pinned "${name}"; then
      if [[ "${vers}" == "latest" ]]; then
        brew cask install "${name}" --force
      else
        brew cask install "${name}" 2> >(grep -v "re-install")
      fi
    fi
  done < <(brew cask list --versions)
}

cask-retire() {
  room="/opt/homebrew-cask/Caskroom"
  while read -r; do
    reply=(${REPLY})
    name="${reply[0]}"
    vers="${reply[1]}"
    if ! __is_pinned "${name}"; then
      for inst in $(ls "${room}/${name}"); do
        if [[ "${inst}" != "${vers}" ]]; then
          echo "Removing ${name} version ${inst}"
          rm -r "${room}/${name}/${inst}"
        fi
      done
    fi
  done < <(brew cask list --versions)
}


답변

zsh에서 brew cask 앱을 ​​다시 설치하려면

brew cask update;

for app in $(brew cask list); do
    brew cask uninstall --force ${app}
    brew cask install --force ${app}
done