Macos 升级通过自制桶安装的所有桶
我过去常常在OS X上安装应用程序。如何升级所有已安装的Cask?现在终于有了一个针对自制Cask的官方升级机制(有关实现,请参阅)!要使用它,只需运行以下命令:Macos 升级通过自制桶安装的所有桶,macos,homebrew,homebrew-cask,Macos,Homebrew,Homebrew Cask,我过去常常在OS X上安装应用程序。如何升级所有已安装的Cask?现在终于有了一个针对自制Cask的官方升级机制(有关实现,请参阅)!要使用它,只需运行以下命令: brew升级——cask 但是,这不会更新没有版本控制信息的容器(version:latest)或具有内置升级机制的应用程序(auto\u updates true)。要重新安装这些机箱(并在升级可用时对其进行升级),请运行带有--greedy标志的升级命令,如下所示: brew升级--cask--贪婪可以列出已安装的cask,包括:
brew升级——cask
但是,这不会更新没有版本控制信息的容器(version:latest
)或具有内置升级机制的应用程序(auto\u updates true
)。要重新安装这些机箱(并在升级可用时对其进行升级),请运行带有--greedy
标志的升级命令,如下所示:
brew升级--cask--贪婪
可以列出已安装的cask,包括:
brew cask list
并强制重新安装桶,包括:
brew cask install --force CASK_NAME
因此,将第一个命令的输出传输到第二个命令,我们将更新所有容器:
brew cask list | xargs brew cask install --force
这是我为处理这个问题而编写的函数。请注意,我个人不希望它盲目地重新安装所有东西,因为我使用的一些容器需要一段时间才能安装,或者需要额外的提示
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
}
改进了deinspanjer提供的代码,我尝试模仿一个noop命令,很像chocolate中的命令(choco update--noop/choco-outleted) 可以看出,我使用的是模块化方法,因为我的用例略有不同。我不想坐在电脑前,为我安装的每个应用程序键入是/否。虽然没有真正的方法升级casks(只需重新安装最新版本),但我首先进行brew更新,以获得实际有可用更新的信息 接下来,我在所有的桶中循环以显示它们的信息。因为我以前做过brew更新,现在提供的信息是某些cask的最新版本未安装 在我的update方法中,我实际解析了特定行的info命令:
lookup | grep -B 3 'Not installed' | sed -e '/^http/d;/^Not/d;/:/!d' | cut -d ":" -f1
这句话的意思是:“每当你读到“未安装”一行时,请给出上面提供的3行信息。然后删除其中包含链接的任何一行,同时删除其中包含“:”的一行。”
考虑到brew cask info命令的结构,我们最后只得到一行(没有版本信息,没有应用程序URL),它反映了cask安装时的实际名称
在我的版本中,这些信息现在已经打印出来,这样人们就可以很容易地看到哪些桶已经过时,可以更新
在这一点上,我做了一个切换案例,因为现在可能没有足够的时间来更新东西。这取决于您的用例。对我来说,有时我只是想看看有什么新的东西(等待新版本、错误修复),但实际上没有时间更新东西,因为现在我不想关闭浏览器等等
因此,如果选择“是”,则桶的清洁名称列表将提供给更新功能,其中对于确定为过期的每个桶,将发布重新安装
再次感谢DeNasJunje,当我试图解决这个问题时,我总是忘记预先发布BREW更新,这样就没有“未安装”的行来实际解析(我的整个方法的基础)。 我希望这会有所帮助。
用于升级软件包的Bash脚本 灵感来自 它的作用- 更新brew/brew容器,清理
- 阅读酒桶清单
- 查看
,了解最新版本brew cask信息
- 如果可用,请安装新版本(并删除所有旧版本!)
curl -s https://gist.githubusercontent.com/atais/9c72e469b1cbec35c7c430ce03de2a6b/raw/36808a0544628398f26b48f7a3c7b309872ca2c6/cask_upgrade.sh | bash /dev/stdin
不耐烦的一行:
curl -s https://gist.githubusercontent.com/atais/9c72e469b1cbec35c7c430ce03de2a6b/raw/36808a0544628398f26b48f7a3c7b309872ca2c6/cask_upgrade.sh | bash /dev/stdin
另存为
/usr/local/bin/cask-upgrade
,因此您可以在本地运行它作为cask-upgrade稍后根据@Atais的回答,我已经将他的逻辑增强为更好的逻辑。我想先检查升级的包,然后再强制升级
只列出了一个类似于Homebrew的$brew cask.sh
的输出brew update
- 上面的列表显示了所有已安装的软件包,带有绿色的
✔代码>指示任何挂起的更新
将强制升级这些软件包$brew-cask.sh升级
$ brew-cask.sh
$ brew-cask.sh upgrade
如果路径中没有
~/bin
,请在上述语句前面加上前缀~/bin/
。根据我所读的内容,我创建了一个脚本,该脚本将创建一个文件,其中列出要更新的文件,包括定义为最新的应用程序。然后,您可以修改该文件以满足您的需求,并使用my Olist脚本安装更新
有关更多信息,请访问我的github
这让我非常恼火,因此我创建了这个脚本来更新所有Brew应用程序,并允许用户选择要更新的Cask应用程序。你也可以不考虑应用程序 自制桶升级 我认为这是目前为止升级木桶的最佳解决方案。
资料来源: 安装和使用
brew tap buo/cask-upgrade
brew update
brew cu
(可选)强制升级过时的应用程序,包括标记为最新的应用程序:
brew cu --all
我用
我认为使用
brew cask reinstall `brew cask outdated`
我会成功的。这也将有助于删除应用程序的早期版本,并安装更新的版本。我自己编写了这样的脚本。请看github。它有很好的描述,但如果你有任何其他问题,请随时问我。它进行公平升级:卸载和安装,因此任何必要的清理都将由“brew”自己执行。自2017年12月起使用: brew桶升级
brew tap buo/cask-upgrade
brew update
brew cu
[自2017年12月Homebrew为cask引入升级命令以来已弃用]
我只使用以下方法:
获取过时的桶:
陈酿桶
升级容器:
重新安装过期的brew桶
brew cu --all
brew cask install --force `brew cask list`
brew cask reinstall `brew cask outdated`
brew cask outdated | xargs brew cask reinstall
$ 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}"
brew cask outdated | xargs brew cask reinstall --force
brew cask upgrade $(brew list --cask)
brew upgrade --cask --greedy
brew list --cask | xargs brew upgrade
brew upgrade --cask