问题描述
我想过滤 brew upgrade
(默认情况下,将所有已安装的软件包升级到最新版本)以仅自动更新“chaff” - 任何出现小问题的软件包,为此我懒得看更改说明或担心。
此功能由 Homebrew 团队 proposed but rejected 提供;这里的目标是在 Homebrew 外部编写此脚本,因此不需要对上游感兴趣。
解决方法
我正在使用这个 shell 脚本来为我处理它。它需要 jq (brew install jq
) 和来自 npm 的 semver 包。
brew upgrade $(
brew outdated --json | \
jq -r '(.formulae[] | [.name,.installed_versions[-1],.current_version]) | join(" ")' | \
while read -r formula current new; do
if (semver --range '~'$current $new >/dev/null);
then >&2 echo "${formula}: $current --> $new"; echo "$formula"; fi
done
)
如果没有要升级的小包,我的解决方案将调用裸 brew upgrade
,这将更新其他所有内容;小心!