Homebrewについて

この投稿では、MacのパッケージマネージャーであるHomebrewの使い方や注意点、困ったときにやることをまとめます。
MACでOSがCatalina以降の方を対象としています。WindonsPCの方や、OSのバージョンがMojava以前の方はご注意ください。

<h2>Homebrewとは</h2>

<p>Homebrewとは、Macの<span class="marker">パッケージマネージャー</span>です。</p>

<!-- wp:paragraph -->
<p>世界中で開発されている便利なライブラリをうまいこと全部使えるようにしてくれる調整役をイメージしていただけると良いかと思います。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>身近なゲームの開発で例えてみます。<br>ゲームソフトの開発者がある追加機能A、追加機能Bを作って世界に公開したとします。<br>世界中の人は、追加機能をダウンロードして楽しんでいました。<br>しかし、機能Aがバージョンアップされたので、ダウンロードしたところ、機能Bがうまく動かなくなってしまいました。</p>
<!-- /wp:paragraph -->

<!-- wp:image {"id":420,"width":512,"height":384,"sizeSlug":"large","linkDestination":"none","className":"is-style-default"} -->
<figure class="wp-block-image size-large is-resized is-style-default"><img src="https://pay-raikit.online/wp-content/uploads/2021/07/arash-payam-ww9DO6PsTBE-unsplash-1024x768.jpg" alt="" class="wp-image-420" width="512" height="384"/></figure>
<!-- /wp:image -->

<!-- wp:paragraph -->
<p>このようなアップデートの影響で、正しく機能しなくなる状況を回避してくれるのが、パッケージマネージャーです。<br>パッケージマネージャーはバージョンの依存関係（お互いに正しく動くか）を考えて、ダウンロードしたほうがいい、しないほうがいいを判断して、うまいことバージョンやライブラリを管理できます。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>詳しくは公式ページをご覧ください。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><a href="https://brew.sh/index_ja">https://brew.sh/index_ja</a></p>
<!-- /wp:paragraph -->

<!-- wp:heading -->
<h2>Homebrewのインストール方法、使い方</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Homebrew自体のインストール、Homebrewでのフォーミュラ（ライブラリ）のインストールに分けてまとめます。</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Homebrewのインストール</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>以下のコマンド一つでできるので、とってもお手軽です。</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>インストール先は、コマンドで変更しない限り「/usr/local/bin」となっているので、<br><span class="marker">コマンドの実行場所はどこでも大丈夫</span>です。<br></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>もし、アンインストールしたくなったら以下の手順でアンインストールできます。<br>アンインストールはコマンド一つで完了しないので、ご注意ください。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><a href="https://weblabo.oscasierra.net/homebrew-uninstall/">https://weblabo.oscasierra.net/homebrew-uninstall/</a></p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>Homebrewでのフォーミュラ（ライブラリ）のインストール</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>こちらもHomebrewのインストール同様、コマンド一つでできるので、お手軽です。</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>brew install フォーミュラ名</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>実際にフォーミュラをインストールして環境構築の流れを確認したい場合は、以下記事をご覧ください。</p>
<!-- /wp:paragraph -->

<!-- wp:jin-gb-block/blog-card {"url":"https://pay-raikit.online/rbenv/"} -->
https://pay-raikit.online/rbenv/
<!-- /wp:jin-gb-block/blog-card -->

<!-- wp:heading -->
<h2>Homebrewの便利コマンド</h2>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>冒頭でも紹介したように依存関係を考慮してパッケージ管理してくれる反面、依存関係周りでトラブルが起きがちです。<br>そのため、困ったときに使える便利コマンドを２つ紹介します。</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":3} -->
<h3>brew doctorコマンド</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p>Homebrewで管理している<span class="marker">ライブラリ（フォーミュラ）に何か問題ないかを確認してくれる</span>便利なコマンドです。問題が何もない場合は、以下のように表示されます。</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>実行コマンド：
brew doctor

実行結果：
Your system is ready to brew.</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>しかし、<span class="marker">ライブラリの依存関係で何かおかしかったりすると、エラーや警告が表示</span>されます。<br>以下の例は、誤ってruby-buildをアンインストールしてしまった例です。</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code><span class="has-inline-color has-luminous-vivid-amber-color">Warning:</span> Some installed formulae are missing dependencies.
You should `brew install` the missing dependencies:
  brew install ruby-build

Run `brew missing` for more details.</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>今回の場合、警告文ですが、ruby-buildがないとrbenvにrubyをインストールできないので、<br>警告通りインストールすることで状況を改善できます。</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>実行コマンド：
①brew install ruby-build
②brew doctor

実行結果：
Your system is ready to brew.</code></pre>
<!-- /wp:code -->

<!-- wp:heading {"level":3} -->
<h3>brew deps、brew usesコマンド</h3>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><span class="marker">ライブラリ（フォーミュラ）の依存する側、依存される側を確認することができる</span>コマンドです。<br>依存する側、される側の関係性がイメージしにくいと思うので、コマンド結果をもとにお伝えします。</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>実行コマンド：
brew deps --tree rbenv --installed

実行結果：
rbenv
└── ruby-build
　　　├── autoconf
 　　  ｜　　　└── m4
　　　├── pkg-config
　　　└── readline</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>上記の例では、rbenvが依存される側、ruby-buildが依存する側です。<br>ぶら下げて支えているのが依存される側、ぶら下がっているのが依存する側ですね。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>rbenvをコマンドに含めたときに依存する側の一覧が表示されていることから分かるように、<br><span class="marker"><strong>「brew deps</strong>」は、自分に対して何が依存し</span><span class="marker">ているか確認できるコマンド</span>です。</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>反対に<span class="marker">「brew users」コマンドは、自分が依存している先を確認することができるコマンド</span>です。<br>先の例に基づくと、ruby-buildがrbenvに依存していることを確認できます。</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>実行コマンド：
brew uses ruby-build --installed 

実行結果：
rbenv</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>使い方は分かったけど、どんなときに使うの？って気になった方に向けて補足です。</p>
<!-- /wp:paragraph -->

<!-- wp:heading {"level":4} -->
<h4>brew deps、brew usesコマンド</h4>
<!-- /wp:heading -->

<!-- wp:paragraph -->
<p><span class="marker">フォーミュラ（ライブラリ）のアンインストール時に、依存関係を確認するために使います。</span></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>実は、Homebrewさん親切で、依存先がいるフォーミュラを削除しようとするとエラーを吐いて、止めてくれるんですね。<br>rbenvに依存しているruby-buildを削除しようとしたときの実行結果をお見せします。</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>実行コマンド：
brew uninstall ruby-build  

実行結果：
<span class="has-inline-color has-vivid-red-color">Error:</span> Refusing to uninstall /usr/local/Cellar/ruby-build/20210707
because it is required by rbenv, which is currently installed.
You can override this and force removal with:
  brew uninstall --ignore-dependencies ruby-build</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>親切に、依存関係を無視して削除する方法（brew uninstall --ignore-dependencies ruby-build）まで教えてくれちゃっています。<br>しかし、実際に実行してしまうと、冒頭の方でもお伝えした通り、brew doctorで傾向でるわ、rbenvにrubyをインストールできなくなるわになってしまいます。</p>
<!-- /wp:paragraph -->

<!-- wp:code -->
<pre class="wp-block-code"><code>brew doctorの結果再掲
<span class="has-inline-color has-luminous-vivid-amber-color">Warning:</span> Some installed formulae are missing dependencies.
You should `brew install` the missing dependencies:
  brew install ruby-build

Run `brew missing` for more details.</code></pre>
<!-- /wp:code -->

<!-- wp:paragraph -->
<p>なので、brew depsコマンドなどは、どのフォーミュラを消したら、どのフォーミュラが動かなくなりそうかのあたりをつけることに役立ちます。</p>
<!-- /wp:paragraph -->