LoginSignup
1
2

More than 1 year has passed since last update.

homebrew でcaskがアップグレードできなかった話

Posted at

brew upgrade --cask が動かなかった

別にエラーが起きたわけでは無かったが、パッケージがアップグレードされていない。
macOSのキャッシュを消しても、brew cleanup -sをしても状況は変わらない。
--caskでインストールしたSlackやらDockerやらのバージョンが一向に上がらない。
brew upgradeは動いているのに。

原因調査

調べたらやはり同様の事態に直面している人はいた。英語で調べるの大事。

要はGUIを提供しているアプリではそのアプリ内からもアップデートが通知されるのでhomebrewでは--caskのバージョン管理はやらなやらないよ、って話。

確かにDockerとかもアップデートがhomebrewの外で通知される。
アップデートが競合して機能不全起こしたら目も当てられないしそりゃhomebrewもそうするか。

解決方法

とはいえこちらは全部homebrewで管理する気なのでこれでは困る。
そしたら解決策は公式でちゃんとアナウンスされていた。

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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2