Homebrew Cask

Macのアプリ(.dmgや.zipの中に.appや.pkgが入っているもの)もやっぱりbrewでインストールするよね、という人が使っているのがCask。

Caskが用意されていないアプリも多いので、どう効率よくCask化するか、というのが問題になる。

私の場合は、自分のリポジトリがgithub.com/wtnb75/homebrew-testであって、ここをbrew tap wtnb75-testで持ってきている。

そうすると、/usr/local/Library/Taps/wtnb75-test以下にcloneされた状態になっているので、少々気持ち悪いところもあるが、ここのディレクトリをそのまま使っている。git remote set-url –push origin git@github.com:wtnb75/homebrew-test.git みたいなコマンドを実行しておくと後が楽になる。

例えばLego Digital Designerの場合、

  • URLはhttp://ldd.lego.com/
  • ダウンロードするファイルは http://cache.lego.com/downloads/ldd2.0/installer/setupLDD-MAC-438.zip
  • バージョンは4.3.8

ということがわかる。ダウンロードしてsha256を求めると、これがaeba6d0a2d0feb2bf6ce2c6be257a87caf6d51a4038e046d45568c8df7e3c6caであって、zipファイルの中にはLDD.pkgというファイルが入っている、と。ここまで分かればあとは書き下すのみ。

こうなる → https://github.com/wtnb75/homebrew-test/blob/master/Casks/ldd.rb

あとはインストール(brew cask install ./ldd.rb)して動作を確認する。

確認できたら、これを/usr/local/Library/Taps/wtnb75-test/Cask以下にldd.rbとして置いて、git add,commit,pushする。何も考えずにやると2度ダウンロードすることになるが、キャッシュディレクトリの場所を知っていれば、それは実際は/Library/Caches/Homebrew/なのだが、ここに最初に(sha256やパッケージファイル名を知るために)ダウンロードしたzipファイルを、パッケージ名とバージョン、拡張子をまぜた「ldd-4.3.8.zip」として置けば、ダウンロードが一度で済む。

Macの場合はアンインストールもそれほどややこしくない(アプリはディレクトリの格好になっていて、アンインストールは単にディレクトリを削除するだけ)のだが、中央管理したがるのは習慣か。Linux使ってても、何かとspecファイル書いて野良rpmを作って管理したがる習性があるんですよね私。

しかしbrewはファイル名とクラス名が一致(ファイル名はlowercase, クラス名はCapitalize)してないとダメなのかな? それはあまりよろしくないんじゃなかろうか。こういう制約は毎日邪魔だと思う以上の意味がないよね。Javaじゃないんだから。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です