brewで依存されてる側のformulaeだけ更新する


前提

brewで、自分でインストールしたformulae 以外 = 依存関係として入ったformulae のみを更新しようと思ったのだけど、
自分でインストールしたかどうかは、情報として保持してないっぽい?

ので、近似解として、依存されてる側のformulaeだけ更新しようと思った。
のでメモ書き。
ちゃんと制御するならbrew pinとかを使うべきなんだと思う。

誰か/何かの役に立てば。

コマンド

$ brew update
$ comm -23 <(brew outdated --quiet) <(brew leaves) | column # 確認
$ comm -23 <(brew outdated --quiet) <(brew leaves) | xargs brew upgrade # 実行

って感じ。

解説

  • brew leaves
    • 依存関係を持たない formulae が取得できる
  • brew outdated
    • 更新がある formulae が取得できる。--quietでformulae 名のみ出力
  • comm
    • ファイルを2つ引数にとり、ファイル1にのみ含まれる行、ファイル2にのみ含まれる行、両方に含まれる行、の3カラムを出力する。
    • オプションで出力するカラムを制限できる。-23によって、カラム1 = ファイル1にのみ含まれる行を出力させている
    • つまり、行を集合と見立てた時に、集合積(comm -12)、集合差(comm -23)を取れるコマンド。
  • <(...)
    • サブシェルのstdoutをファイルとして渡せる