Help us understand the problem. What is going on with this article?

もう Brewfile は使わない

More than 3 years have passed since last update.

Brewfile はオワコンなの?

Brewfile: a Gemfile, but for Homebrew

かつては Brewfile と呼ばれる Homebrew 用の Gemfile で、Formula(パッケージのこと)を管理するスタイルが主流でした。

Brefile
# Brewfile
brew "openssl"
# a comment
tap "homebrew/dupes"

シェルスクリプトライクな記述をしたファイルを用意して、

$ brew bundle Brewfile

とするだけで環境構築が出来るという便利なサブコマンドでした。

しかし、ある日、

$ 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.

という警告が出て、正式には issues にも

What? "Warning: brew bundle is unsupported ..." #30815

となり Brewfile はオワコン化しました。

代替手段を模索し始めた Homebrew ユーザは、Brewfile をシェルスクリプト化して使ったり、他のツール、例えば Ansible を使ったりして、この Brewfile オワコン化問題をしのいでいました。

しばらくして、bundle サブコマンドは復活しましたが、以前のようなデフォルトコマンドではなく、タップして有効にする必要が出ただけで、また使えるようになりました。

Brewfile はオワコンではなくなりました。

オワコンかどうかが問題ではない

オワコンではなくなったのです。しかし、本体から外された bundle に必要性を感じるか。という考えが出始めました。Brewfile オワコン問題が浮上したときに、一斉に代替手段も求め、様々な方法や知見が確立、いや乱立し、ひとそれぞれ使いたいように、やりたいような手法を打ち出した(ように感じます)。

実際に私もシェルスクリプト化して使用していました。

一旦、Brewfile を離れてみて、「別に拘っていた必要もないのでは?」という思いも出てきました。極端な話、インストールしたい formula を羅列したようなテキストファイルを用意して cat で回して brew install したっていいくらいです。

私の場合、そんなような、簡単なインストールだけをしてくれるツールが欲しかったからです。それくらいなら作れるな、ということで今流行の Go 言語で作ってみました。その名も Brionacです。

どうやら、ケルト神話の武器かなんかのようです。

ブリューナク (Brionac) は、ケルト神話に登場する武器だと言われているが、日本人が1990年ごろに創作した武器だという説もある
- ブリューナク - Wikipedia

発音が Brew(ブリュー)と似ていたからというだけで命名したというのは秘密です。

Brionac

これまた、その名も brionac attack です。武器らしいサブコマンドです。Gem っぽく brionac a でもいいです。GIF では、brew install 時の標準出力を見せずにプログレスバーと簡易的な結果の出力で隠していますが、これは formula の数が多くなると必然的に画面が埋まり、最初の方にインストールした formula の結果が見えなくなることを防ぐためです。brionac a -v とすることで verbose にすべてを表示することも出来ます。

また、Brionacformula.yaml に基づいてインストールします。今らしい、YAML を採用しています。人間が記述しやすいデータ形式です。

formula.yaml
---
tap:
  - b4b4r07/brionac
  - b4b4r07/gomi

brew:
  install:
    - { name: git }
    - { name: gomi }
    - { name: brionac }
    - { name: reattach-to-user-namespace }
    - { name: the_silver_searcher }
    - { name: tig }
    - { name: tmux }
    - { name: vim, args: --with-lua }
    - { name: zsh, args: --disable-etcdir }
    - { name: peco }

Brionac は、基本的に formula.yaml と同期する形式を採っています。ここに記述されていて未インストールのものはインストールされ、記述されていなくてインストール済みのものはアンインストールされます。

また、Brionac を始めやすいように、brionac gen することで、現時点でインストールされている formula を YAML にして書き出してくれます。

これは TODO: ではありますが、brionac attack のときに gen も含めて統合しようかと考えています。

インストール

もう、この記事をここまで読んでいる時点で Homebrew ユーザであるに違いありません。

$ brew tap b4b4r07/brionac
$ brew install brionac

Brew でインストールしましょう。バイナリも用意しているので、そのほうが良い場合は GitHub Releases を見てください。

このツールに人気が出たり、今よりも使いやすくなったりしたら tap なしのインストールも考えようかなと思っています。

最後に

Brewfile はオワコンではないので、

$ brew tap Homebrew/bundle
$ touch Brewfile

タップして、Brewfile を作って

$ cat Brewfile
tap 'caskroom/cask'
brew 'emacs', args: ['cocoa', 'srgb', 'with-gnutls']
brew 'redis'
brew 'mongodb'
brew 'sphinx'
brew 'imagemagick'
brew 'mysql'
cask 'google-chrome'

$ brew bundle

bundle すればいいだけです。他の手段もたくさんあります。シェルスクリプト化したり、Ansible や有志が作った Brewfile ライクツールです。Brionac はその中でも、簡単シンプルが売りです。現時点では貧弱と言ってもいいかもしれません。

こういう問題があったおかげで、様々なアプローチが見えてきました。
bundle が本体から外された今、かつてにように Brewfile にこだわることもなくなったのではないでしょうか。

mercari
フリマアプリ「メルカリ」を、グローバルで開発しています。
https://tech.mercari.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした