我习惯使用 Debian。但现在我必须时不时地使用装有 macOS 10.14.6(全新安装)的 MacBook。
MacOS 没有 apt-get。因此我下载并安装了 brew。
我安装了如下软件:
brew cask install firefox
brew cask install iterm2
(还有一些其他的东西)
软件运行正常。几天后:
brew update
给了我一份新版本的软件列表。
brew upgrade
升级 iproute2mac 1.2.2 -> 1.2.3
我认为这应该与“apt-get update & upgrade”一样:一切都应该是最新的。那天晚些时候,我发现了新闻“iterm2 < 3.3.6 未保存”(CVE-2019-9535)。我以为“我已经升级了。一切都应该没问题”,事实证明我错了:
brew cask info iterm2 iterm2: 3.3.6 (自动更新) https://www.iterm2.com/ /usr/local/Caskroom/iterm2/3.3.2 (64B)
它已经过时且易受攻击:-(
修复:
brew cask 重新安装 iterm2
作品。
检查火狐浏览器:
> brew cask info firefox
firefox: 70.0 (auto_updates)
https://www.mozilla.org/firefox/
/usr/local/Caskroom/firefox/68.0.1 (64B)
另一个过时的软件 :-(
让我们检查一下前更新 Firefox:
> brew cask outdated
(no results)
brew 检查过时的软件不起作用。brew upgrade 不起作用。它没有注意到旧的 iterm2,它们都没有注意到旧的 Firefox。我也在 GUI 中检查了软件更新(苹果徽标 > 关于这台 Mac)。但那里只列出了 Safari。
我如何让“brew upgrade”检测并升级所有过时的软件?
附加问题:在 Debian 下,当软件过期时,我会在 GUI 中收到通知。如何在 macOS 下接收 Firefox、iterm2 和其他软件的此类通知?
答案1
使用 brew 来更新软件包需要单独更新每个已安装的软件包。
最后我找到了解决这个问题的方法。有一个名为“brew-cask-upgrade”的工具可以更好地处理更新:https://github.com/buo/homebrew-cask-upgrade
安装该工具后,您只需要一个简单的命令,该工具将:
- 更新 brew
- 搜索(并查找!)过时的软件包
- 更新那些包
这是一个关于如何使用它以及它如何工作的小例子:
$ brew cu
==> Options
Include auto-update (-a): false
Include latest (-f): false
==> Updating Homebrew
Already up-to-date.
...
==> Found outdated apps
Cask Current Latest A/U Result
1/3 libreoffice 6.3.2 6.3.4 [OUTDATED]
2/3 libreoffice-language-pack 6.3.2 6.3.4 [OUTDATED]
3/3 virtualbox 6.0.14,133895 6.1.0,135406 [OUTDATED]
Do you want to upgrade 3 apps or enter [i]nteractive mode [y/i/N]? y
==> Upgrading libreoffice to 6.3.4
==> Downloading ...
答案2
我今天在使用 docker 桌面时遇到了同样的问题,发现了这一点:https://docs.brew.sh/FAQ#why-arent-some-apps-included-during-brew-upgrade
因此,如果您正在使用以下latest
版本的软件(或者)使用自己的更新功能,您要么需要
- 使用内置更新功能(firefox、iterm2、docker、telegram 等)
- 使用
brew upgrade <cask>
或 - 使用
brew upgrade --greedy
我认为使用另一个工具来执行此操作是不必要的,但这取决于你。