Open usp TukubaiをHomebrewでインストールする
ユニケージ開発手法で使われるTukubaiコマンドのオープンソース版がOpen usp Tukubai。シェル芸勉強会などでも出てくるが、Tukubaiコマンドは使ってみないと良さが分かりにくいシブいやつ。より使ってもらうには簡単にインストールが出来る方がイイよね。先日USP研究所からPersonal Tukubaiも発売され、Tukubaiコマンドが世に広まる気配が感じられる。
MacというかOSXで使うならやっぱりHomebrewでインストールしてみたい。ということでFormula作ってtapで公開した。下記コマンドでOpen usp Tukubaiがインストール出来るようにした。
$ brew tap papiron/shelltool $ brew install papiron/shelltool/open-usp-tukubai
既にOpen usp Tukubaiをインストールされている方は、Open usp Tukubaiのtar.gzを展開、またはgitリポジトリをcloneして、下記コマンドで先にアンインストールしておこう。
$ make uninstall
WebにはFormulaの作成とtapで公開は簡単!って見かけるのだが、Formulaの書き方や流れを理解出来るまで試行錯誤を重ね、結構手間取ってしまった。Formula公開する方の参考になればと思い、忘備録も兼ねてブログっておく。
方針
非公式なものとして公開。tapで追加してインストールしてもらう方針で。インストールは付属のMakefileを活用。また本来なら依存関係としてpython2系が必要だが、OSXには標準でpython2系が入っているのでそれを使う。
- 非公式で公開。
- tapの名前は
papiron/shelltool
- パッケージ名(Formula)は
open-usp-tukubai
- ソフトウェアはGithubから取得
- 依存関係の指定は無し
- 取得するリビジョンは手動で指定(最新版は --HEAD指定で取得)
- バージョンは取得するリビジョンがcommitされた日付(yyyymmdd)
- インストールはMakefileを使って
make install
で(PREFIXを変更) - インストールするパスはHomebrew標準に従う
tapをpapiron/shelltool
にしたのは、将来的に他のシェルツール的なFormulaを追加するかもしれない?から。
Formula公開場所作成
Formulaを公開するGithubのリポジトリ名はhomebrew-名前
にする必要がある。今回はhomebrew-shelltool
という名前でリポジトリを作成。
tap追加
下記コマンドでtapを追加すると、/usr/local/Homebrew/Library/Taps/papiron/homebrew-shelltool
にgitリポジトリが作成される。Githubのリモートリポジトリも設定されている。
$ brew tap papiron/shelltool
Formulaテンプレート作成
brew create
コマンドでFormulaのテンプレートを作成。取得元のリポジトリやtar.gzファイルのhttp/ftpなURLを指定するようだ。
下記を実行すると、/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/open-usp-tukubai.rb
というFormulaテンプレートが作成される。Formulaの中身はRubyのDSLになっている。
$ brew create https://github.com/usp-engineers-community/Open-usp-Tukubai.git
Formulaの移動と編集
Formulaファイルを、作成したtapディレクトリに移動。
$ mv /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/open-usp-tukubai.rb /usr/local/Homebrew/Library/Taps/papiron/homebrew-shelltool
Formulaファイルを編集する。ポイントは次の通り。
- インストールするリビジョンは手動で指定(自動で最新版でもいいのだが念のため)
brew install --HEAD
用にhead
行追加- インストールはMakefileを使って
make install
コマンドで - インストール先のディレクトリは環境変数
PREFIX
で指定 - インストール先のディレクトリ指定はHomebrew側で提供される変数
prefix
を使う。
$ brew edit papiron/homebrew-shelltool/open-usp-tukubai
環境変数HOMEBREW_EDITOR
かEDITOR
で指定されたエディタが起動する。
class OpenUspTukubai < Formula desc "Open usp Tukubai" homepage "https://uec.usp-lab.com/TUKUBAI/CGI/TUKUBAI.CGI?POMPA=DOWNLOAD" url "https://github.com/usp-engineers-community/Open-usp-Tukubai.git", :revision => "0da8b6cfe04df6e7d8cb8b4fe62170ee2fc4ab47" version "20151015" head "https://github.com/usp-engineers-community/Open-usp-Tukubai.git", :branch => "master" def install ENV.append "PREFIX", prefix system "make", "install" end test do system "false" end end
Homebrew側で提供される変数prefix
は#{HOMEBREW_PREFIX}/Cellar/#{name}/#{version}
のようになる。今回の場合は/usr/local/Cellar/open-usp-tukubai/20151015
になる。Homebrew側で提供されるディレクトリに関する変数はこちらの公式ドキュメントを参照のこと。
https://github.com/Homebrew/brew/blob/master/share/doc/homebrew/Formula-Cookbook.md#variables-for-directory-locationsgithub.com
編集したFormulaはbrew audit
コマンドでチェックを行う。
$ brew audit --strict papiron/shelltool/open-usp-tukubai
Formulaのcommitとpush
tapのディレクトリはgitリポジトリになっている。修正内容をcommitし、Githubのリモートリポジトリにpushする。この時https経由でpushするためか、ユーザー名とパスワードが聞かれる。SSHの公開鍵認証使いたいけど仕方ない?
$ cd /usr/local/Homebrew/Library/Taps/papiron/homebrew-shelltool $ git add open-usp-tukubai.rb $ git commit $ git push
これでFormulaの公開は完了。
インストールのデバッグとアンインストール
tapが追加されていることを確認。
$ brew tap caskroom/cask homebrew/apache homebrew/core homebrew/dupes homebrew/php homebrew/science homebrew/versions homebrew/x11 papiron/shelltool sanemat/font
詳細デバッグモードでインストール。--debug --verbose
オプションを指定。
$ brew install --debug --verbose papiron/shelltool/open-usp-tukubai
/usr/local/Cellar/open-usp-tukubai/20151015
ディレクトリ以下にインストールされる。bin
以下の各コマンドは/usr/local/bin
ディレクトリ以下ににシンボリックリンクがはられる。share
以下のディレクトリも/usr/local/share
ディレクトリへシンボリックリンクがはられる。
アンインストールは下記コマンドで行う。
$ brew uninstall papiron/shelltool/open-usp-tukubai
Formulaのメンテナンス
Formulaは作って終わりではない。ソフトウェアのバージョンが上がったり、Formula自体の書き方を変えたりでメンテナンスしていく必要がある。ちなみにHomebrewではFormulaのversion
で指定したバージョンが変更になると、新しいバージョンになったと判定されるようだ。
先ほどは直接vimでFormulaファイルを指定して開いたが、Formulaの編集は下記コマンドで行う。
$ brew edit papiron/shelltool/open-usp-tukubai
編集したFormulaのチェックを行う。
$ brew audit --strict papiron/shelltool/open-usp-tukubai
修正内容をcommitし、Githubのリモートリポジトリへpushすればいい。この手順もbrewコマンドで出来るのかも??
$ cd /usr/local/Homebrew/Library/Taps/papiron/homebrew-shelltool $ git add open-usp-tukubai.rb $ git commit $ git push