rcmdnk's blog

FIVE WOODS ファイブウッズ CASK キャスク 二つ折り財布 38054

Macでのパッケージ管理コマンドのHomebrewの拡張に アプリを管理するHomebrew Caskがありますが、 そのアプリを置いておく場所などに関して大幅な変更があったようです。

シンボリックリンクから実体をコピーする様に

元々Homebrew CaskではCaskroomと呼ばれるアプリ置き場に一旦 アプリをインストールし、 そこから/Applicationsなどへシンボリックリンクを貼る、と言う形で インストールを行ってきました。

これが変更され、一旦Caskroomにはアプリ情報だけを入れ、 アプリの実体は/Applicationsなどに直接インストールする様になりました。

Change artifact behavior to moving instead of symlinking by mwean · Pull Request #13966 · caskroom/homebrew-cask

去年の9月くらいから議論されてたみたいですが5月の末くらいに この変更がマージされた様です。

これによって新たにインストールするアプリは/Applicationsに リンクではなく実体としてインストールされる様になりました。

この変更に関しては、アプリによってはシンボリックリンクだとそもそも動かないものがあったり、 そういったアプリは別途コピーしていたり、 それ以外にも色々と面倒なことが起こっていたので 結局直接入れる様にしたみたいです。

また、アップデート等の際にも結構問題が起こります。

元々は他の方法で入れたアプリと区別をつけやすくしてアンインストールを簡単に するためなども考えてリンクにしていたんだと思いますが、 直接入れたほうが面倒が少ない、ということになったみたいです。

Caskroomのデフォルト場所変更

元々Homebrew Caskでは /opt/homebrew-cask/Caskroom/という場所にアプリをインストールしていました。

これがHomebrewをインストールする/usr/local/Caskroomになりました。

Change default Caskroom path by vitorgalvao · Pull Request #21857 · caskroom/homebrew-cask

こちらは2週間ほど前。

これはEl CapitanからSIPが導入されたりして別途ディレクトリを作ったりすることが難しくなったのと、 元々/opt*はMacPortsなどで使っていた場所で、Homebrew関連では通常使わない所なので ちょっと余計なディレクトリが出来て邪魔くさい感じになっていたのを治したかな、と言う感じ。

変更に沿って自分の環境をアップデートする

以前からCaskを使っている状態でアップデートしたCaskを使おうとすると、

$ brew cask list
Warning: The default Caskroom location has moved to /usr/local/Caskroom.

Please migrate your Casks to the new location and delete /opt/homebrew-cask/Caskroom,
or if you would like to keep your Caskroom at /opt/homebrew-cask/Caskroom, add the
following to your HOMEBREW_CASK_OPTS:

  --caskroom=/opt/homebrew-cask/Caskroom

For more details on each of those options, see https://github.com/caskroom/homebrew-cask/issues/21913.

...

みたいな注意メッセージが最初に出てきます。 一応listコマンドならその結果は最後に出てきますが上のメッセージは毎回出てきます。

Use legacy Caskroom if it exists, but warn of change by jawshooah · Pull Request #21901 · caskroom/homebrew-cask

すぐに使えなくしてしまうと大変なので取り敢えず古いのがある場合は古いのを使う、 的な処置が行われています。

なのできちんと移行した方が良いんですが、示された リンクを追ってみても結構つまりながら進めていくことになるかと思います。

How to migrate to the new location? · Issue #21913 · caskroom/homebrew-cask

実際に行った作業としては、まずCaskroomを移動:

$ mv /opt/homebrew-cask/Caskroom /usr/local/

その後、シンボリックリンクとしてインストールされてたアプリを アップデートするため、全てのアプリを--forceで再インストールします。

$ brew cask install --force $(brew cask list)

ここでいくつか失敗したりしたのでその都度チェックしながら再インストール。。。

しょっぱな、adobe-readerが失敗しましたが、元々アプリは 直接コピーされた形で入っているので取り敢えずCaskを削除。 (/usr/local/Caskroom/adobe-readerを削除。)

そんな感じで幾つか手で除いたりして一通り再インストール終了。

これで上の様なメッセージは出なくなりました。

/opt/homebrew-cask/Caskroomが残っていると上のメッセージが出る可能性があるので /usr/localに移す際にコピーではなくてmv、もしくは 元のディレクトリを別途避難させる必要があります。

新たなCaskroomには、これまで通り、各Cask名のディレクトリが出来ていて、 その中にバージョン番号のディレクトリができています。

以前はその中にアプリの実体がありましたが、新しい物だと 何も無かったり、インストール用pkgファイルがあったりする形で、 基本、Caskを管理するためだけにディレクトリ構造だけ残している、 という感じです。

Homebrew-fileもアップデート

これに伴い、 Brew-fileの中でのCaskroomの取り扱いも対応させました。

上にもある様にオプションで--caskroomとか使っている場合はそれを有線、 /usr/local/Caskroomがあればそれを、 /usr/local/Caskroomが無くて/opt/homebrew-cask/Caskroomがあれば それをCaskroomとします。

どれも無ければデフォルトの /usr/local/Caskroom。 (リストを作ったりするのに使うので何も無ければ余り意味はありませんが。)

まとめ

とういことでHomebrew Caskでアプリケーションを管理してる人もたくさんいると思いますが、 面倒なメッセージが出続けるので早めに対処しておいた方が良いと思います。

Sponsored Links
Sponsored Links

« Windows Insider previewを止めた Brew-fileにトップパッケージだけ残せるオプションを追加 »

}