rcmdnk's blog

チップトップ ハンドクリーナー クリーンアップ 25ml

Brew-fileupdateというBrewfileのアップデートと それに伴うHomebrewパッケージのアップデートを行うコマンドがありますが、 この中でBrewfileに無いパッケージを削除するcleanというコマンドも 実行するようになっていました。

これが気づかないうちに色々パッケージを消してしまうことがあるので デフォルトでは実行しないようにしました。

Sponsored Links

Brew-fileのupdateコマンド

brew file updateを実行すると、これまでは

  • brew file pull : RepositoryにあるBrewfileをpull
  • brew file install: pullしてきたBrewfileに従いパッケージをインストール
  • brew file clean : pullしてきたBrewfileにないパッケージを削除
  • brew update : Homebrewのアップデート
  • brew upgrade : Homebrewのパッケージアップグレード
  • brew file init : 現在のパッケージリストからBrewfileを作成
  • brew file push : 作成したBrewfileをpush

を実行していました。

複数の環境でBrewfileをGitHubなんかで管理している時、 一方の環境でパッケージを足したらもう一方にも自動的に加えられる様にしてあります。

加えて、一方の環境で削除したパッケージももう一方の環境で 自動で削除して状況を同期してしまおう、というのがcleanも入れている動機です。

ですが、これにはちょっと問題があって、複数で管理していなくても、 きちんとBrewfileがアップデートされていないとインストールした パッケージが削除されてしまうことがあります。

brew-wrap を導入していればbrew installでパッケージをインストールした場合 Brewfileは自動的にアップデートされパッケージが追加される様にはなっています。

また、この辺以前ちょっと改良して、 brew install時にインストールするパッケージに依存するパッケージがあり それらも同時にインストールする場合、 それら依存パッケージもきちんとBrewfileに書き込む様にしています。

なのでbrew-wrapを利用している場合、 通常インストールするパッケージや、またcaskを利用して アプリをインストールする場合は問題になりません。

ただ、この前からApp Storeでインストールしたアプリも管理できる 様にしましたが、 GUIなApp Storeアプリからアプリをインストールした場合 当然Brewfileはアップデートされません。

なのでインストール後、brew file initを実行するなど 手動で更新する必要があります。

これをしないまま、レポジトリのBrewfileをアップデートしようと brew file updateを実行してしまうと 上の実行順序で分かるようにBrewfileを自前環境で更新する前にcleanを実行するため 新しくApp Storeからインストールしたアプリが削除されてしまいます。

削除されたものをきちんと同期するよりも 予期せず削除されることを避けた方が良いと思うので このcleanに関してはデフォルトで実行しない事にしました。

cleanも実行したい場合は

$ brew file update -C

-Cオプションを付けるとcleanも含めて実行できる様になっています。

後、上の実行順を改めて見てみて、 brew update/upgradeを中途半端なところで行ってるので これらは一番最初に実行するようにも変更してあります。 (installした後にアップデートがあると二度手間になるので。)

Sponsored Links
Sponsored Links

« 本格的な夏に向けて扇風機、サーキュレーターを選ぶ Vim v.s. Emacsをフローチャートで表現 »