さようならbrew-bundle, こんにちはBrewdler

森裕介(プログラマー)
無念

2015年初めてのブログを2014年度末最後に投稿。どうしてこんなことになってしまったんだ。

この記事は以前(2014年4月3日) BrewfileでHomebrewのパッケージを管理する という内容の補足です。

“brew-bundle is dead.”

前回の記事を書いてからしばらくして、 brew-bundle は非推奨となりました。 なんとも間が悪いです。

1
2
3
4
$ 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コマンドを引き続き使うことができます。

1
2
3
4
5
6
7
8
# コマンドが見つからないので実行できない
$ 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を例にすると以下のようになります。

1
2
3
4
5
6
7
8
9
10
11
# 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版BrewfileBrewdler版Brewfile もあわせてご確認ください。

また、 brew-bundleで記述できた update, upgrade, cleanupなどは記述できず 、 パッケージのインストールのみを行うためだけのものになっています。

使い方

homebrew/brewdler をtapして brew-brewdle コマンドを実行します。

1
2
3
4
5
6
7
8
9
10
# 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]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 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に追加する場合に便利です。

1
2
3
4
5
6
7
8
9
10
11
12
13
# 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投げるなど貢献していければなあと思っています。