내가 사용 브루 술통 ‘ 나는 모든 설치된 통을 업그레이드하려면 OS X의 방법에 응용 프로그램을 설치?
답변
이제 Homebrew Cask의 공식 업그레이드 메커니즘이 완성 되었습니다 (구현 은 이슈 3396 참조 )! 사용하려면 다음 명령을 실행하십시오.
brew cask upgrade
그러나 버전 정보가없는 캐스 크 ( version :latest
) 또는 내장 된 업그레이드 메커니즘이있는 응용 프로그램 ( ) 은 업데이트하지 않습니다 auto_updates true
. 이러한 통을 다시 설치하고 업그레이드가 가능한 경우 업그레이드하려면 다음과 같이 --greedy
플래그를 사용 하여 upgrade 명령을 실행하십시오 .
brew cask upgrade --greedy
답변
자가 맥주 통 업그레이드
나는 이것이 통을 업그레이드하는 가장 좋은 해결책이라고 생각합니다.
출처 : https://github.com/buo/homebrew-cask-upgrade
설치 및 사용법
brew tap buo/cask-upgrade
brew update
brew cu
(선택 사항) 최신으로 표시된 앱을 포함하여 오래된 앱을 강제로 업그레이드합니다.
brew cu --all
답변
설치된 통을 다음과 같이 나열 할 수 있습니다.
brew cask list
그리고 다음을 사용하여 통을 다시 설치하십시오.
brew cask install --force CASK_NAME
따라서 첫 번째 명령의 출력을 두 번째 명령으로 파이핑하여 모든 통을 업데이트합니다.
brew cask list | xargs brew cask install --force
답변
패키지를 업그레이드하기위한 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 월 현재 사용 :
맥주 통 업그레이드
[Homebrew가 cask에 대한 업그레이드 명령을 도입 한 2017 년 12 월 이후로 더 이상 사용되지 않음]
간단히 다음을 사용합니다.
brew cask outdated | xargs brew cask reinstall
답변
이것을 처리하기 위해 작성한 함수는 다음과 같습니다. 개인적으로 설치하는 데 약간의 시간이 걸리거나 추가 메시지가 필요하기 때문에 모든 것을 맹목적으로 다시 설치하기를 원하지 않았습니다.
brew_cask_upgrade() {
if [ "$1" != '--continue' ]; then
echo "Removing brew cache"
rm -rf "$(brew --cache)"
echo "Running brew update"
brew update
fi
for c in $(brew cask list); do
echo -e "\n\nInstalled versions of $c: "
ls /opt/homebrew-cask/Caskroom/$c
echo "Cask info for $c"
brew cask info $c
select ynx in "Yes" "No" "Exit"; do
case $ynx in
"Yes") echo "Uninstalling $c"; brew cask uninstall --force "$c"; echo "Re-installing $c"; brew cask install "$c"; break;;
"No") echo "Skipping $c"; break;;
"Exit") echo "Exiting brew_cask_upgrade"; return;;
esac
done
done
}
답변
@Atais의 답변을 바탕으로 그의 논리를 더 멋진 것으로 향상 시켰습니다. 실제로 업그레이드를 강제하기 전에 패키지를 먼저 업그레이드했는지 검사하는 방법이 필요했습니다.
$ brew-cask.sh
Homebrew ‘s와 유사한 출력 만 나열합니다brew update
.- 위 목록에는 설치된 모든 패키지가
✔
표시 되며 녹색 은 보류중인 업데이트를 나타냅니다. $ brew-cask.sh upgrade
해당 패키지를 강제로 업그레이드합니다.
암호:
# Usage:
#
# $ brew update
# You should execute this first to update everything locally.
#
# $ brew-cask.sh [update]
# This will list all of your cask packages and rather there is an upgrade
# pending with a ✔ checkmark, just like Homebrew does with "brew update".
# The update command is optional, as it doesn't actually do any tracking, there's
# not really anything to "update" with cask. But it keeps with the pattern of
# of Homebrew's "brew update" pattern for those with memory muscle fingers (like me).
#
# $ brew-cask.sh upgrade
# This performs a "brew cask install <cask> --force" of all cask packages that have
# an update pending.
#
# This code was inspired by http://stackoverflow.com/a/36000907/56693
# get the list of installed casks
casks=( $(brew cask list) )
if [[ "$1" == "upgrade" ]]; then
for cask in ${casks[@]}; do
current="$(brew cask info $cask | sed -n '1p' | sed -n 's/^.*: \(.*\)$/\1/p')"
installed=( $(ls /opt/homebrew-cask/Caskroom/$cask))
if (! [[ " ${installed[@]} " == *" $current "* ]]); then
echo "Upgrading $cask to v$current."
(set -x; brew cask install $cask --force;)
else
echo "$cask v$current is up-to-date, skipping."
fi
done
else
echo "Inspecting ${#casks[@]} casks. Use 'brew-cask.sh upgrade' to perform any updates."
for (( i = i ; i < ${#casks[@]} ; i++ )); do
current="$(brew cask info ${casks[$i]} | sed -n '1p' | sed -n 's/^.*: \(.*\)$/\1/p')"
installed=( $(ls /opt/homebrew-cask/Caskroom/${casks[$i]}))
if (! [[ " ${installed[@]} " == *" $current "* ]]); then
casks[$i]="${casks[$i]}$(tput sgr0)$(tput setaf 2) ✔$(tput sgr0)"
fi
done
echo " ${casks[@]/%/$'\n'}" | column
fi
설치 만하면됩니다 (일명 “지금 필요합니다!”).
내 .dotfiles
저장소에 체크인되었습니다 . 따라서 다음을 통해 신속하게 설치할 수 있습니다 ~/bin
.
$ curl -L https://raw.githubusercontent.com/eduncan911/dotfiles/master/bin/brew-cask.sh --create-dirs -o ~/bin/brew-cask.sh
$ chmod 755 ~/bin/brew-cask.sh
그런 다음 다음과 같이 사용하십시오.
$ brew-cask.sh
$ brew-cask.sh upgrade
당신이 ~/bin
당신의 경로 ~/bin/
에없는 경우 위의 진술 접두사 .