自家製樽の密造方法

homebrew-cask には、おそらく無いだろう、と思われるアプリを入れてみる事に。
ターゲットは gimpmytracks、そして macvim for kaoriya

オフィシャルな手続きは、homebrew-cask USAGEにあります。

Arcade, New Tipperary
Arcade, New Tipperary / National Library of Ireland on The Commons

ここでは、こちらの "3. 使いたいアプリの cask がない場合はどうすれば?"を主な参照先としてます。*1

作業の大まかな区切りは、こんな感じでしょうか。;


  1. 自分専用 homebrew-cask の repo を github 上に用意。
  2. ローカルにも、1 に準じた構成を用意。
  3. cask 作成に必要な情報を用意。
    • cask_namer
    • shasum
  4. cask を作成。
    • brew cask create
  5. 動作確認。
    • tap
    • brew cask install

ちょっと具体的にターミナルでの作業で表わしてみると、以下のような感じになります?

自分専用 homebrew-cask として mycasks を用意し、MacVim.app をインストールしてくれる cask を作る、というシーンを例に。;

% #github にリポジトリ `homebrew-mycask` は作っておく。..別に後でもいいですけど。
% : cask ディレクトリ
% mkdir -p $HOME/homebrew-mycasks/Casks
% cd $HOME/homebrew-mycasks/Casks
% : cask 作成のための準備
% curl --location --remote-name https://github.com/splhack/macvim/releases/download/20140501/macvim-kaoriya-20140501.dmg
% hdiutil attach macvim-kaoriya-20140501.dmg -noidmereveal
% : cask 名
% $(brew --prefix)/Library/Taps/phinze/homebrew-cask/developer/bin/cask_namer MacVim-KaoriYa
Proposed Cask name:          macvim-kaoriya
Proposed file name:          macvim-kaoriya.rb
First Line of Cask:          class MacvimKaoriya < Cask
% : sha256
% shasum -a 256 macvim-kaoriya-20140501.dmg
f45deb0f7dc399b248ff857b339542d6a3bdfee5a49bbad28ec09ad9b105bebc  macvim-kaoriya-20140501.dmg
% hdiutil detach -force /Volumes/MacVim-KaoriYa
% rm macvim-kaoriya-20140501.dmg
% : cask (formula) 作成
% brew cask create macvim-kaoriya
% mdfind -onlyin $(brew --prefix) -name macvim-kaoriya.rb
% mv /usr/local/Library/Taps/phinze/homebrew-cask/Casks/macvim-kaoriya.rb .
% #mytracks.rb を開き、各項目を定義 >>詳細は後述
% : 動作確認
% cd ..
% git init
% git add .
% git commit -m "my new cask macvim-kaoriya"
% git remote add origin https://github.com/woowee/homebrew-mycasks.git
% git push -u origin master
% brew tap woowee/mycasks
% brew cask search macvim
==> Exact match
macvim
==> Partial matches
macvim-kaoriya
% brew cask install macvim-kaoriya
% : done!

ここではこれを補足する形でメモしていこうと思います。

アプリの有無の確認方法

homebrew-cask インストール済だったら、ターミナルで以下 ;

% brew cask search
via. [How to Use Homebrew-cask > Searching for Casks][10]

コマンドを打てる環境でなければ、
phinze/homebrew-cask の Casks ディレクトリを覗けば良いらしいです。

これ、自分の場合 gimp がそれでして、当初、こちらも独自 cask が必要なアイテムと思っていました。

理由は、ここで入れたい gimpgimp.orggimp ではなく、いわゆる Simone 氏バージョンの gimp だったりする*2ので。boxen の経験上、前者はあるだろうけど、後者はないだろうなと、踏んでおりました。

で、何の気なしに確認してみたら。;

% brew cask search gimp
gimp gimp-lisanet

ってのがある。

gimp-lisanet.rb の中身見みてみたら、どうやら、その Simone さんの gimp を見ているらしい。

と言うことで、cask 自作のアイテムは、mytracks と macvim-kaoriya の 2 つとなりました。

自分専用 homebrew-cask の repo 名は homebrew-<付けたい名前>

こう言うことなのだそうです。;

homebrew-フォーミュラレポジトリ名 というレポジトリ名にして github に作っておくと、brew tap ユーザ名/フォーミュラレポジトリ名 で tap できるようになるっぽい。

今回のケースですと、 上述引用で言うところの "フォーミュラレポジトリ名" が "mycask"。
そして github に作るリポジトリ名は "homebrew-mycask" となります。

ついでに、「へーっ」と思ったのが、;

ちなみにこの tap コマンドは、空のリポジトリに対しても問題なく行える

と言う事は、github に自分専用の homebrew-cask 作ったら、次の手続きでいきなり brew tap して作業をすすめてもアリってことでしょうかね。

一応。ここではローカルに、こんな構成を用意するところからはじめました。
() 表記は、この時点では存在していなくて、これから作るファイルを表しています。

$HOME/[homebrew-mycask][Casks]
  │  ┝ (macvim-kaoriya.rb)
  │  └ (myracks.rb)(brew-mycask.rb)

ちなみに、たいした話じゃないのですが、自分専用の homebrew-cask の中に作るディレクトリ Casks は、複数形である事に注意。単数系 Cask とすると認識してくれず動きませんので。*3
そう、躓きました(笑

cask を作る上でちょっと

cask、つまり <アプリ名>.rb を作るのに、
他の cask を見様見真似で作るのもありですが、念の為、homebrew-cask 側が用意したツールを使うのが良いと思います。

cask を作るまでには、;

  • cask_namer で、cask に必要な名称を生成する。
  • cask (rb ファイル) を生成する。
  • cask のアイテム sha256 に使う checksum を生成する。

の手続きを踏むことになります。。

cask_namer

cask_namer については、こちらを参照。;

$ "$(brew --prefix)/Library/Taps/phinze/homebrew-cask/developer/bin/cask_namer" '/full/path/to/new/software.app'
via. [How To Contribute > Adding a Cask > Naming the Cask][30]

ただ、今回作業対象としている macvim kaoriya は、ちょっと注意が必要です。

事情は、brew cask search macvim を走らせてみると分かると思います。

macvim kaoriya の app 名で cask_namer を穫ろうとすると、kaoriya 版ではない既に在る macvim と重複してして、エラーが出ます。

なので今回のケースは、こちらの方法を穫ります。;

$ "$(brew --prefix)/Library/Taps/phinze/homebrew-cask/developer/bin/cask_namer" 'Google Chrome'
via. [How To Contribute > Adding a Cask > Naming the Cask][30]

で、/full/path/to/new/software.app のところは "macvim-kaoriya" としました。
おそらくこの名称は任意でもいいかもしれません。

brew cask create

cask rb ファイルの生成については、こちら。;

$ brew cask create my-new-cask
via. [How To Contribute > Adding a Cask > The brew cask create Command][31]

ちょっと引っかかったのは、"my-new-cask" の部分で、
ここにはアプリの名前とか .app .rb とかは入れてはならぬようです。
Error: No such file or directory - な感じのエラーが返ってきます。

"my-new-cask" には、 cask_namer による Proposed Cask name を使ってやるみたいです。

そしてこれもあら、っと思ったのですが rb ファイルの生成場所。
これはどうやらデフォですと homebrew-cask の中に作るようです。具体的には、$(brew --prefix)/Library/Taps/phinze-cask/Casks/ かと思います。brew cask create したらそこを覗いてみるとよろしいかと思います。

shasum -a 256

そして sha256。こちらについてはこうなるらしいです。;

% shasum -a 256 /path/to/app/downloaded.dmg

.app でも獲れるかも?

rb ファイルの設定項目

rb ファイルの設定アイテムについての詳細は、こちら。;

» How To Contribute > Adding a Cask > Cask Stanzas

ちょっとつまずいたのが、link の項目。
これは アプリケーションの app ファイルだけで良いのですね。
macvim-kaoriya だったら MacVim.app、mytracks だったら 'myTracks.app'。

homebrew-cask はデフォだと $HOME/Applications にインストールしたアプリケーションのシンボリックリンクを用意してくれるのですが、この link は、そのシンボリックリンクで使う名称になる、と。

最初勘違いして、/Application/MacVim.app とかなんてやっちゃって、Error: It seems the symlink source is not there: '/Applications/MacVim.app' って怒られた。

まぁ、ドキュメント読めばわかる話なのですが、つい。

brew tap, brew cask install

rb ファイルの作成が終わったら、テスト。
先ほどの自分専用 homebrew-cask に push して、brew tap に brew cask install。

うまくいったらおしまいです。

*1:ほんと、新しいことやろうと調べるとなんやかんやでこちらに辿り着く。しかも常に周回遅れに、唖然とする(笑。勝手にではありますが :p、いつもお世話になっております。

*2:どうしてかは、以前にもこの辺りで触れたので。

*3:日本語の感覚だと、単数-複数あまり気にしないので、つい。