homebrew cask の個人用 formula についてのメモ
こちらの環境におけるアプリケーションの管理はすべて homebrew cask を使ってます.
cask に無いアイテムも幾つかありまして,それらについても自前で formula を用意しています.
そのひとつに myTracks というのがあるのですが,このインストールで以下の様なエラーを吐かれ処理が中断します.
==> Downloading http://www.mytracks4mac.info/download/myTracks2.dmg ######################################################################## 100.0% ==> Note: running "brew update" may fix sha256 checksum errors Error: sha256 mismatch Expected: 2e51df5efe9cd3c41a62235a71892e4afe1eaf70c6a64720cda11913c1c49bec Actual: 2a97e9605c4bce74511752c0aa338a1332c5c313daded3a2f593a4205620aef5 File: /Library/Caches/Homebrew/mytracks-latest.dmg To retry an incomplete download, remove the file above.
sha256 チェックサム値がおかしいと.
この度,これで戸惑ったので今後のために,とメモを残しておこうと思いました.
バージョンでした.- vresion
には 'latest' ではなく,きちんとバージョン番号を.
原因は使っている formula の version
の内容でした.
ソフトウェアは常に最新を使用するのを基本としているので,"latest" を当てていたのですが,これが良くなかった様子.
こう言う事もあるのですね.
cask :v1 => 'mytracks' do version '2.6.8' # ← 'latest' ではなく,正しい version 番号を指定してやること. sha256 '2a97e9605c4bce74511752c0aa338a1332c5c313daded3a2f593a4205620aef5' url 'http://www.mytracks4mac.info/download/myTracks2.dmg' name 'mytracks' homepage 'http://www.mytracks4mac.info/c/index.php/en/' license :unknown app 'myTracks.app' end
気付いたキッカケは,app store ではソフトウェアがメジャーバージョンアップしたと謳っていたにも関わらず,ダウンロードした dmg の app 名が myTracks2.dmg
と "2" のままであったこと.*1
独自 cask formula 作成メモ
滅多に行う作業ではないのですが,だからこそ「あれ何だったっけ」と言うのがあって悲しくなったので.
以下内容は,homebrew cask のドキュメントにあるものです.
それに,個人的な内容ですが,今回の作業で「あれ」と思った事柄を追記してます.
ここでは以下のようなシーンを想定します.
『my-new-cask というアプリケーションの homebrew-cask の fomula を作る』
以下詳細です.;
- 対象のアプリケーションは,'my-new-cask.app',配布用のデータは,'my-new-cask.dmg' とします.
- homebrew および homebrew-cask は導入済みで,すべてデフォルトで使用しているとします.
- 自分用の個人的な homebrew cask 用に 'mycaskroom' という名のリポジトリを持っていて.
- それは github にて 'github_user/mycaskroom' というリポをもって管理しているものとします.*2
- そして,話は出来るだけ簡単にしたいので
~/tmp
と言うテンポラリの作業用ディレクトリを用意し,その中で行うものとします.
Step 00. 準備
- "my-new-cask" をダウンロードしておく.
- (必要に応じ)自分用の cask formula を収めているリポジトリを untap しておく.
brew untap github_user/my-casks-repo-name
以下手続き,;
Step 01. 対象となるアプリケーション用の cask formula を作成する.
% brew cask create my-new-cask
- my-new-cask の formula として,
my-new-cask.rb
と言う名前でファイルが生成されます. - またこの手続きは,formula ファイルの生成と同時に,アプリケーションのアイテム名の命名をも行ったことでもある.
- 今回の例ですと,"my-new-cask" という文字列は,各
brew cask
コマンドで使用する際の,実際のアイテム名にあたります.アプリケーション名になる,と表現した方が分かりやすいでしょうか.
例えば,brew cask search ..
で使うキーワード文字列であり,またbrew cask install ..
で指定するアイテム名にあたります. - 名称はユーザー任意で適当に付けて構わないと思います.極端な話,自分が分かりやすい勝手な名前を付けてしまっても構わないということです.
- 注意が必要なのは,名前の重複はだめ,ということぐらいかと*3.
- 今回の例ですと,"my-new-cask" という文字列は,各
Step 02. (必要に応じ) 上述コマンドで作成した formula を探し,適当な作業しやすい所に持ってきておく.
% mdfind -name my-new-cask.rb /usr/local/Library/Taps/caskroom/homebrew-cask/Casks/my-new-cask.rb # ←コレ % mdfind -name my-new-cask.rb | pbcopy % mv /usr/local/Library/Taps/caskroom/homebrew-cask/Casks/my-new-cask.rb ~/tmp
Step 03. その formula をエディタ等で開いて,編集する.
Step 01 で生成された formula の中身は,下記のような感じ.
cask :v1 => 'my-new-cask' do version '' sha256 '' # `shasum -a 256 /path/to/my-new-cask.dmg` で取得.引数で指定するパスは,*.dmg のもの.*.app ではない. url 'https://' # ダウンロードした *.dmg の url. name '' # アプリケーションの正式名称.そんなに厳密でなくても良いみたい... homepage '' # アプリケーションのホームページの url. license :unknown # todo: change license and remove this comment; ':unknown' is a machine-generated placeholder app '' end
それぞれを定義していきます.詳細は同ドキュメントの Cask Stanzas に説明があります.
- [sha256] の取得方法;
コメント部分にも書いてますが,以下コマンドで取得します.
% shasum -a 256 ~/tmp/my-new-cask.dmg | pbcopy # 結果を直接クリップボードに入れちゃってます.
ちなみに引数で指定するパスは *.dmg
および *.zip
ファイルのものです..app
ではありません.
* [url] の取得方法;
ブラウザの "リンクのアドレスをコピー" を使うでも良いですが,こんなのでも取得できるみたいです.
% hdiutil attach ~/tmp/my-new-cask.dmg % cd /Volume/my-new-cask % "$(brew --repository)/Library/Taps/caskroom/homebrew-cask/developer/bin/list_url_attributes_on_file" './path/to/my-new-cask.app'
こちらは先の sha256 チェックサム値と違って,指定するパスは *.app
ファイルの方.
Step 04. 作成した formula を所定の場所に置いて tap,brew install my-new-cask
.
$ ls "$(brew --repository)"/Library/Taps caskroom homebrew github_user $ mv ~/tmp/my-new-cask.rb /usr/local/Library/Taps/github_user/mycaskroom/Casks/ $ brew tap github_user/mycaskroom $ brew install my-new-cask ==> Downloading http://www.ooo.ooo/download/my-new-cask.dmg ######################################################################## 100.0% ==> Symlinking App 'my-new-cask.app' to '/Users/yourname/Applications/my-new-cask.app' 🍺 my-new-cask staged at '/opt/homebrew-cask/Caskroom/my-new-cask/latest' (1032 files, 79M)
と言う事でおしまいです.