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日本語入力は仕方なく公式サイトからインストーラーで入れることにした。