brew upgrade --cask が動かなかった
別にエラーが起きたわけでは無かったが、パッケージがアップグレードされていない。
macOSのキャッシュを消しても、brew cleanup -sをしても状況は変わらない。
--caskでインストールしたSlackやらDockerやらのバージョンが一向に上がらない。
brew upgradeは動いているのに。
原因調査
調べたらやはり同様の事態に直面している人はいた。英語で調べるの大事。
要はGUIを提供しているアプリではそのアプリ内からもアップデートが通知されるのでhomebrewでは--caskのバージョン管理はやらなやらないよ、って話。
確かにDockerとかもアップデートがhomebrewの外で通知される。
アップデートが競合して機能不全起こしたら目も当てられないしそりゃhomebrewもそうするか。
解決方法
とはいえこちらは全部homebrewで管理する気なのでこれでは困る。
そしたら解決策は公式でちゃんとアナウンスされていた。
どうしても--caskでupgardeをしたい(homebrewでバージョン管理をしたければ)--greedyオプションをつけろとな。
てなわけで--greedyを追加してサクッと実行。
brew upgrade --cask --greedy
無事成功🍻
個別に更新する方法
ただしこの方法だと全部の--caskパッケージが強制的にアップグレードされてしまう。
意図して古いバージョンを使用パッケージが混ざっているときはそれでは困る。
そんなときはまず最新バージョンでないパッケージを探して個別で実行しなければ仕方がない。
まずは対象を確認。こちらもが--greedyオプションが必要。もちろんformulaならいらない。
brew outdated --cask --greedy
そしたらバージョン遅れのcaskパッケージとそのバージョンが取得できるので、アップグレードしたいパッケージ名をコピー。
そんでもって個別にあげよう。
brew upgrade (パッケージ名) --cask --greedy
ちょっとめんどくさいやつ
Google日本語入力もhomebrew caskでインストールしていたが、こちらはhomebrewではバージョンが常にlatestで登録されている。
何が厄介かというとこの状態でbrew upgrade --cask --greedyを実行すると実際には差分がなくとも常にGoogle日本語入力が更新(と言う名の再インストール)がされてしまう。
それだけならまだいいがこのプロセスが削除→インストールになっているためかIMEの設定からGoogle日本語入力が消えてしまう。
つまり毎回IMEにGoogle日本語入力を再登録してやらなければならない。
さすがに面倒くさいにも程があるのでGoogle日本語入力は仕方なく公式サイトからインストーラーで入れることにした。