さようならbrew-bundle, こんにちはBrewdler
2015年初めてのブログを2014年度末最後に投稿。どうしてこんなことになってしまったんだ。
この記事は以前(2014年4月3日) BrewfileでHomebrewのパッケージを管理する という内容の補足です。
“brew-bundle is dead.”
前回の記事を書いてからしばらくして、 brew-bundle
は非推奨となりました。
なんとも間が悪いです。
$ brew bundle
Warning: brew bundle is unsupported and will be replaced with another,
incompatible version at some point.
Please feel free volunteer to support it in a tap.
このような警告メッセージが使用時に表示されるようになったのです。
その後しばらくはメッセージが表示されるものの使用することはできましたが、
現在は brew-bundle
コマンドは削除されてしまい、通常の手順では使うことはできなくなりました。
“brew-bundle was buried to the boneyard.”
brew-bundleコマンドですが削除されてしまったわけではなく、 boneyard に移されています。 boneyardをtapすることでbrew-bundleコマンドを引き続き使うことができます。
# コマンドが見つからないので実行できない
$ brew bundle
Error: Unknown command: bundle
# boneyardをtapすることで実行できる
$ brew tap homebrew/boneyard
$ brew bundle
...
ただしboneyard(墓場)という名の通り、 使われなくなったFormulaeなども埋葬されていくので 気がついたら古いものを参照している、ということが起こりえます。
死者は掘り起こさずに埋葬しておくべきということでしょうか。
Brewdler
僕もしばらくの間boneyardをtapしてbrew-bundleを使っていましたが、 先日 Brewdler に移行しました。
Bundler for non-Ruby dependencies from Homebrew
上記はhelp messageからの引用ですが、Brewdlerとは Brew + Bundler の造語なんでしょう、たぶん…。
brew-bundleとのちがい
パッケージ名をコーテーションでくくったり、コマンド名が変わったりと、Brewfileの記述が異なります。 僕のBrewfileを例にすると以下のようになります。
# tap は記述方法が変わらない
tap 'caskroom/cask'
tap 'homebrew/brewdler'
# brew-bundleでは `install package-name` という記述
brew 'ansible'
brew 'autojump'
# brew-bundleでは `cask install package-name`
cask 'appcleaner'
cask 'atom'
僕の brew-bundle版Brewfile 、 Brewdler版Brewfile もあわせてご確認ください。
また、 brew-bundleで記述できた update, upgrade, cleanupなどは記述できず 、 パッケージのインストールのみを行うためだけのものになっています。
使い方
homebrew/brewdler
をtapして brew-brewdle
コマンドを実行します。
# tap
$ brew tap homebrew/brewdler
# show usage
$ brew brewdle --help
brew brewdle [-v|--verbose] [--file=<path>|--global]
brew brewdle dump [--force] [--file=<path>|--global]
brew brewdle cleanup [--dry-run] [--file=<path>|--global]
brew brewdle [--version]
brew brewdle [-h|--help]
# Brewfileの内容をインストールする
$ brew brewdle
Succeed to tap caskroom/cask
Succeed to tap caskroom/fonts
Succeed to tap homebrew/brewdler
(中略)
Succeed to install ansible
Succeed to install autojump
Succeed to install colordiff
(中略)
Succeed to install virtualbox
Succeed to install vivaldi
Succeed to install xtrafinder
Success: 84 Fail: 0
このように実行結果が表示されます。
インストールずみのpackageからBrewfileを作成する dump
コマンドがあるので
手動で追加したパッケージをあとでBrewfileに追加する場合に便利です。
# dump
$ brew brewdle dump --file=./path-to-brewfile
# show
$ more ./path-to-brewfile
tap 'caskroom/cask'
tap 'caskroom/fonts'
tap 'homebrew/brewdler'
tap 'homebrew/dupes'
tap 'homebrew/php'
tap 'homebrew/versions'
brew 'ansible'
...
brew-bundle用のBrewfileからBrewdler用に書き換える際に有用です。
さいごに
Brewdlerは活発に開発が続けられています。 埋葬されないように自分もPR投げるなど貢献していければなあと思っています。