我使用Homebrew Cask在OS x上安装应用程序,如何升级所有已安装的Cask ?


当前回答

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

它的作用

更新酿造/酿造桶,清理 读酒桶清单 检查酿造桶信息的最新版本 如果可用,请安装新版本(并删除所有旧版本!)

来源: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/桶-upgrade,以便稍后在本地以桶-upgrade的形式运行

其他回答

这是我写的处理这个的函数。注意,我个人不希望它只是盲目地重新安装所有东西,因为我使用的一些桶需要一段时间才能安装或需要额外的提示。

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 
} 

带有'auto_updates'或'version:latest'的桶将不会升级;通过——贪婪地升级它们:

brew upgrade --cask --greedy

现在终于有了一个官方的Homebrew Cask升级机制(参见第3396期的实现)!要使用它,只需运行以下命令:

酿造升级——酒桶

但是,这将不会更新没有版本信息的桶(version:latest)或具有内置升级机制的应用程序(auto_updates true)。要重新安装这些桶(并在升级可用时升级它们),运行带有——greedy标志的upgrade命令,如下所示:

酿造升级—酒桶—贪婪

变得过时:

酿造过时——酒桶——贪婪——冗长

升级所有未标记为“可自动升级”的桶

brew upgrade --cask

升级所有桶(“可自动升级”和“不可自动升级”)

brew upgrade --cask --greedy

这真的让我很恼火,所以我创建了这个脚本来更新所有的Brew应用程序,并允许用户选择更新哪个Cask应用程序。你也可以将应用程序排除在外。

https://github.com/derrekyoung/ScriptsAndUtils/blob/master/brew-cask-upgrade.sh