rcmdnk's blog

The Complete PC Upgrade and Maintenance Seminar in a Box (2-Volume Boxed Set With CD-ROMs and Videocassettes)

Homebrewで通常のパッケージはbrew upgradeでアップデート出来ていましたが、 Caskでインストールしたアプリに関してアップデートする方法は用意されていませんでした。

結構前から議論はあったのですが色々面倒があってなかなか実装されないままでましたが、 昨年末位にbrew cask upgradeというコマンドが実装されたようです。

brew cask upgrade

コマンドとしては

$ brew cask upgrade

とするとCaskでインストールしたアプリのうち、

auto_updates true

とCaskで定義されている以外のアプリに関して全てのアプリのバージョンアップグレードを行います。

auto_updatestrueになっているものは、例えばgoogle-chromeなど アプリが自分でアップデートする様になっているものです。

バージョンアップグレードは基本的には古いバージョンをアンインストールして新しいバージョンを再インストールする、とうい形です。 なのでgoogle-chromeなどはアプリの中で直接行った方が素直にアップグレードできるので デフォルトではcask upgradeでアップグレードしないようになっています。

もし、そのようなアプリも含めて全て新しいバージョンにしたい場合は

$ brew cask upgrade --greedy

とします。 この--greedyではバージョンはCaskでインストールした時のものをチェックするだけなので、 アプリ自身で最新にアップグレードしていたとしても再インストールが行われる場合があります。

アップデートが必要なアプリを確認するには

$ brew cask outdated

をすると新しいバージョンのあるアプリが表示されます。 この場合もauto_updatesなものに関しては無視されますが、 それらも見たい場合には

$ brew cask outdated --greedy

とします。

ちなみにcaskコマンドですが、現在は自動でインストールされるので

$ brew tap caskroom/cask

とかしなくても自動でtapされます。

数年前から議論はあった

今回の導入は1年ほど前に固め始めたものが入った感じです。

brew cask upgrade outline · Issue #29301 · caskroom/homebrew-cask

Implement brew cask upgrade by amyspark · Pull Request #3396 · Homebrew/brew

古くは

brew cask upgrade · Issue #309 · caskroom/homebrew-cask

Draft Roadmap: brew cask upgrade · Issue #4678 · caskroom/homebrew-cask

な感じで数年前から議論としてはあったものですが、 auto_updatesという値を導入することで 余計な再インストールをすること無くupgrade出来る様になったので ようやく導入された、という感じです。

brew-fileの変更

上にも書いたように数年前から議論はあったものの実現が難しそうだったので、 簡易的なものをbrew-fileに実装していました。

$ brew file cask_upgrade

を行うと、上のbrew cask upgrade --greedyと同じ様に 全てのアプリに対して新しいバージョンがあればuninstall/installを行う、という仕様でした。

今回、cask upgradeが実装された(ことに気づいた)のでこの機能は外しました。

また、brew file casklistというコマンドもあって、 この機能ではMacにインストールされている全てのアプリを検索して、 Caskでインストールされたものか、直接インストールしたけどCaskがあるものか、 AppStoreからインストールしたものか、等をリストしてくれます。

このリストを作る時にバージョンチェックをしてobosleteな項目も作ってましたが、 brew cask outdatedで簡単に取れるしわざわざcasklistでチェックする必要はないかな、 ということでバージョンチェックは外しました。

もう1つ、

$ brew file update

を行うと、

$ brew update
$ brew upgrade --fetch-HEAD
$ brew cask upgrade
$ brew file pull
$ brew file install
$ brew file init
$ brew file push

と同様のことをしてくれますが、このcask upgradeは今回追加しました。

Sponsored Links
Sponsored Links

« Homebrewでインストールされる/usr/local/bin/pythonが再びPython2に変更 Homebrewで絵文字出力を無効化する »

}