やっぱ macbook さ酒蔵ば建てで醸造することにすた -- お蔭でおいらの mavericks は brew に cask でアル中まっしぐら

とかって。

boxen 止めて、homebrew & homebrew-cask 使うことにした、と言う話。

伏見酒蔵
伏見酒蔵 / Go Imai

きっかけ

先月上旬のこと。あたくしめの macbook pro がまたまたぶっ飛ぶ。

これで 3 回目。それは、ほぼ月一でこんにちわ、のペース...つか "ペース" じゃねーよ。orz

なことで、正直「こんな調子だと、もーだめかもなー」と言う思いもあり、あってほしくない最悪のシナリオに、うっすらと出来ない心の準備をして Genius Bar に。

で迎えた結果は、まったく想像だにしなかった神対応
召されたあたくしめの macbook pro は、それはまさに輪廻転生がごとく、生まれ変わって我が手の元に舞い戻ってきてくれたのです。
ありがと apple !
マジっ。

とゆことで、早速心躍らせ、トキメキ電源、script/boxen、どんっ。

そしたら、何これ。
warning やら error やら、どばどばーっ吐いてターミナルが真っ赤に染まる...白目脱力

あー、やだなー、めんどくさいなー、思いながらも、でもやんなくちゃな、と仕方なく向き合うことに。
どうも homebrew 周りで多発している様子だったので、その辺りをキーワードに調べていたら、'brewfile' とか 'homebrew-cask' ってのがチラチラ目に入る。

導入

することにしました。

背中押されたのは、とりわけこちら 2 つかな ;

» Boxenを使うのをやめ、Homebrew + Homebrew-Caskを使うようにした - Qiita
» 「BrewfileでHomebrewパッケージを管理する」をやってみた - sonots blog

いずれも boxen 導入の際、ひじょーに助けとなった方々だったりする(笑

で、色々妄想した挙げ句、brew 関連のコマンドを並べた shellscript を用意することにしました。

brewfile は使いません。

なぜ brewfile ではなく shellscript か。

それは、やっぱり制御の自由度かと。

導入の際、とある情報がどーしても気になってまして。
きっかけは、またコチラなのですが ;

(追記) 4. brew install foo で古いバージョンが入っている場合エラーになって失敗する

どうやら cask の方も同じような感じのあるみたい? *1;

I have calibre 0.2.29 installed with cask.
brew update; brew upgrade does not update it to the latest version available (0.2.30 as of now). ... brew cask upgrade · Issue #309 · phinze homebrew-cask

こういった場面に遭遇した場合、どう取り回すのが便利、つか楽か、と、ただただ考えてばかりいて、作業着手の決断を前に、だいぶ足踏みをしていたのです。

うちとしては、
エラー等で折角の処理を中断してほしくない。

brewfile だと、その辺りを実現するための制御に関する自由度はどうやら低いようですし*2*3

それに、shellscript に決めたもうひとつの要因がありまして、
それは、インストールしたアイテムの、一緒にやっておきたい設定とかも、shellscript なら、この一連の流れの中でやってしまえるかな、と。

うんうん。

これで、brewfile じゃなく shellscript でやる意味みたいなもんが揃ったか、と。
勝手に、自分なりに。

んで...

brew.sh

みたいなものとしました。

gist にて晒してみたいと思います。(恥

» woowee/brew.sh

大きく、3 つの構成を持たせてます。

ひとつは、homebrew 自身の環境を設定。tap 含む。
二つ目は、brew insallbrew cask install
そして最後に、インストール後の設定。

tap

tap しているアイテムは以下で、それぞれ ;

brew tap homebrew/dupes # rsync 3 を使いたい。
brew tap phinze/cask    # homebrew-cask を使いたい。言わずもがな。
brew tap sanemat/font   # ricty フォントを使いたい。
brew tap woowee/mycask  # mytracks、kaoriya 版 macvim を使いたい。自作 cask。

brew install と brew cask install

でメインのインストールは、こんな感じにしてみました。;

for app in "${apps[@]}"; do brew cask install "${app}"; done

現時点、エラーを想定しての処理は入れてません。
これはおいおい、で良いかと(おーざっぱっwww。

ちなみに、入れるアイテムは、頭の方で定義し、app 配列に放っちゃっております。

このあたりで「ん?」と思ったのが、 既に brew-cask がインストールされている状態で brew upgrade brew-cask すると error を返してきて、処理が止まってしまう。

Error: brew-cask-0.32.0 already installed

ので || true
何かよく分かってないのですが。

settings

ログインシェルは zsh に。

そして、ricty をセットアップして、
radiko の処理で必要な mid3v2 が欲しいので、mutagen をインストール。

こんなところでしょうか。

特に、mid3v2 インストール目的に python まわりを調整する作業は、boxen に比べてとても楽なのは助けられました。
python インストールすると、同時に pip が使える環境になってるらしい。こいつあ、いい。

==> Installing python
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/python-2.7.
######################################################################## 100.0%
==> Pouring python-2.7.6_1.mavericks.bottle.tar.gz
==> Caveats
Setuptools and Pip have been installed. To update them
  pip install --upgrade setuptools
  pip install --upgrade pip

You can install Python packages with
  pip install <package>

They will install into the site-package directory
  /usr/local/lib/python2.7/site-packages

ところで以前、pip 要るなら、virtualenv 要るなんて書いたけど、もしかして要らない?
未だ、ここ辺り良く分かっていない...

感想

./brew.sh とかで実行。

やってみての感想ですが、
やはり homebrew 使った方が楽ですかね。

特に、ちょいと的外れな切り口でしょうが、
労力とか時間など物理的な負荷以上に、作業や処理中に消費する心的な負荷(笑 は断然低いように思えて、それが個人的に最も惹かれたところだったりします。

boxen も homebrew もどちらも便利ですが、homebrew の方がハードルが低い、と言うかフレンドリーな印象がありました。
情弱の自分でもそんなにストレスなく、それなりに作業できたりします。

boxen の方が良かったかも、と思えるところは、
アプリのインストールだけでなく、osx の設定をしてくれるような仕組み*4があったりするところでしょうか。
自分は、ほぼ使ってませんでしたがw*5

最後にこれもちょっと変な感想ですが、
処理が記載通りの順番で処理してくれる、と言うのはやっぱ安心しますね、何気に。

何と表現したらいいのでしょう...
そんな homebrew の "地に足の着いた感" と言うのが、妙に気に入ってて、何か安心して見ていられる、と(笑。こういう安心感は、boxen では無かったものかと。
puppet をよく分かっていない自分が悪いのですが、puppet ってどうしても何やっているかが把握しにくくて、
これどうしてそうなのか分かっていないのですが、レシピ通りに処理しなくて、見ていて、何か気持ち悪いな、と。
そんな随所に見られる何とも言えない "ボンヤリ感" が拭えなくて、時にこれがストレスだったりもしていたのですよね。

と言う事でして。
homebrew そして homebrew-cask での環境構築、お勧めです。

はい、おしまい。 相も変わらずの長文駄文、失礼しました。

*1:今は、cask でも upgrade コマンドつくってよ、な感じに変わってるみたいですが。...長い間随分と揉めてる様子。

*2:勿論自分が分かってないだけなのかもしれませんが

*3:勿論、対策はあります。これについてもコチラでしっかり記載されております。さすが。

*4:puppet-osx を使うのですが。

*5:この手の os 周りの設定については、自分の場合、shellscript に defalts や plistbuddy コマンド並べてやっていたので。あと boxen を始めた時の boxen-osx の内容って、結構貧弱だったと言うのもあります。今は、結構色んな事できるようになっているようですが。で唯一、boxen-osx に任せていたのは、zsh インストール後のログインシェル設定だったかと。