我使用Homebrew Cask在OS x上安装应用程序,如何升级所有已安装的Cask ?
当前回答
截至2017年12月使用: 酿造桶升级
[自2017年12月Homebrew为桶引入升级命令以来已弃用] 我简单地使用以下方法:
brew cask outdated | xargs brew cask reinstall
其他回答
改进了deinspanjer提供的代码,我尝试模仿一个noop命令,很像来自chocolatey的命令(choco update——noop / choco obsolete)。
https://git.io/vgjiL
#!/bin/sh
fetch(){
echo "Removing brew cache"
rm -rf "$(brew --cache)"
echo "Running brew update"
brew update
}
lookup() {
for c in $(brew cask list); do
brew cask info $c
done
}
update(){
var=$( lookup | grep -B 3 'Not installed' | sed -e '/^http/d;/^Not/d;/:/!d' | cut -d ":" -f1)
if [ -n "$var" ]; then
echo "The following installed casks have updates avilable:"
echo "$var"
echo "Install updates now?"
select yn in "Yes" "No"; do
case $yn in
"Yes") echo "updating outdated casks"; break;;
"No") echo "brew cask upgrade cancelled" ;return;;
*) echo "Please choose 1 or 2";;
esac
done
for i in $var; do
echo "Uninstalling $c"; brew cask uninstall --force "$i"; echo "Re-installing $i"; brew cask install "$i"
done
else
echo "all casks are up to date"
fi
}
fetch
update
可以看到,我使用的是模块化方法,因为我的用例略有不同。我不想坐在我的电脑前,对我安装的每个应用程序都输入是/否。虽然没有真正的升级桶的方法(只是重新安装最新版本),我首先做酿造更新的信息,有实际更新可用。
接下来,我循环遍历所有桶以显示它们的信息。因为我之前做了酿造更新,现在提供了一些桶的最新版本没有安装的信息。
在我的update方法中,我实际上为特定的行解析了info命令:
lookup | grep -B 3 'Not installed' | sed -e '/^http/d;/^Not/d;/:/!d' | cut -d ":" -f1
这句话的意思是:“当你读到“未安装”这一行时,给出上面3行信息。然后删除任何有链接的行,也删除有“:”的行。”
考虑到brew cask info命令的结构,我们最终得到一行(没有版本信息,没有应用程序URL),它反映了它安装的桶的实际名称。
酿造桶信息输出
在我的版本中,这些信息现在被打印出来,所以人们可以很容易地看到哪些木桶过时了,并可以更新。
在这里我做了一个切换的例子,因为现在可能没有足够的时间来更新东西。这取决于您的用例。对我来说,我有时只是想看看有什么新的(等待一个新版本,一个错误修复),但实际上没有时间更新东西,因为现在我不想关闭我的浏览器等。
因此,如果有人选择“是”,则将已清理的桶名列表提供给更新函数,其中对于每个被确定为过期的桶,将发布重新安装。
再次感谢deinspanjer,当我试图为自己解决这个问题时,我总是忘记事先发布brew更新,所以没有“未安装”行来实际解析(这是我整个方法的基础)。
我希望这对你们有帮助。
买过时的酒桶:
酿酒桶过时了
升级桶:
酿造桶重新安装过时的桶
演示脚本:
$ cat ~/bin/brew_cask_upgrade.sh
#!/bin/bash
red=$(tput setaf 1)
# green=$(tput setaf 2)
reset=$(tput sgr0)
(set -x; brew update;)
for cask in $(brew cask outdated | awk '{print $1}')
do
echo "${red}update ${cask} ...${reset}."
(set -x; brew cask install --force "$cask";)
done
echo "${red}brew clean up ...${reset}"
(set -x; brew cask cleanup;)
echo "${red}brew clean up done.${reset}"
homebrew-cask-upgrade
我认为这是目前为止升级酒桶的最佳方案。 来源:https://github.com/buo/homebrew-cask-upgrade
安装使用
brew tap buo/cask-upgrade
brew update
brew cu
(可选)强制升级过时的应用程序,包括标记为最新的应用程序:
brew cu --all
带有'auto_updates'或'version:latest'的桶将不会升级;通过——贪婪地升级它们:
brew upgrade --cask --greedy
brew cask outdated | xargs brew cask reinstall --force
推荐文章
- 在Mac OS X上哪里安装Android SDK ?
- Mac/OS X上的/var/lib/docker在哪里
- Xcode构建失败“架构x86_64未定义的符号”
- 在OSX 10.11中安装Scrapy时,“OSError: [Errno 1]操作不允许”(El Capitan)(系统完整性保护)
- 如何在Mac OS X 10.6中使硬件发出哔哔声
- 从Cocoa应用程序执行一个终端命令
- Android Studio无法找到有效的Jvm(与MAC OS相关)
- NSRange从Swift Range?
- 如何在交互式Python中查看整个命令历史?
- 在OSX中永久设置PATH环境变量
- 如何停止mysqld
- 如何从远程SSH会话发送数据到本地剪贴板
- SSH端口转发~/。ssh /配置文件?
- 如何复制文件跨计算机使用SSH和MAC OS X终端
- Mac SQLite编辑器