Homebrewは元々はMac用のパッケージマネージャーです。そのHomebrewがv2.0からLinuxを正式サポートしました。同時に、WSLも正式にサポートしました。
この記事では、WSL上でHomebrewをセットアップする方法を解説します。
Homebrewについて
HomebrewはmacOS上で広く使われているパッケージマネージャーです。Homebrew経由でインストールすると、次のような良いことがあります。
- 依存関係があるソフトを同時にインストールできる
- インストールしたソフトの更新やアンインストールが簡単にできる
Windowsの場合は、システム設定の「アプリと機能」から簡単にアンインストールができるので、アンインストールできる部分のメリットはあまり感じないかもしれません。
しかし、ソフトの更新や依存関係の解決などはメリットを感じるのではないでしょうか。
また、インストーラを使えば簡単にインストールできるから不要だという考えもあると思います。Homebrewを使うと、コンソールでコマンドを叩くだけで、以下を実行してくれます。インストーラをダウンロードしてインストールするよりも簡単ではないでしょうか。
- 指定したパッケージ本体をダウンロードする
- 依存関係があるパッケージをダウンロードする
- ダウンロードしたパッケージを順番にインストールする
- 必要なスクリプトの生成や実行を行う
WSL上だとメリットはあるのか?
WSL上で動作しているLinuxディストリビューションには元々パッケージマネージャーが入っています。メリットはあるのでしょうか?実はあります。例えば、次のような点です。
- Linuxディストリビューションに依存せずに、パッケージを使用できる
- ホームディレクトリ配下にインストールされるので、システム環境を汚染しない
WSL上で使用するLinuxディストリビューションには、apt-get
などのシステムレベルのパッケージマネージャーがあります。しかし、何がインストールできるかはディストリビューションにより異なります。Homebrew経由の場合は、Homebrewが解決するのでディストリビューションに依存しません。
Windows版の動作環境
Windows版は、WSL (Windows Subsystem for Linux) で動作します。WSLはLinuxのバイナリをWindows上で動かす互換レイヤーです。そのため、正確にはHomebrewのWindows版が登場したのではなく、Linux版が登場し、WSL上でも正式にサポートされているというのが正しいでしょう。
WSLが必要になるので、先にWSLをセットアップする必要があります。WSLのセットアップ方法については、次の記事をご覧ください。
昨年の2019年2月2日にリリースされたHomebrew v2.0から、公式サポート環境にWindows 10 (WSL) と Linux が加わりました。 この記事では、Homebrewで必要になるWSLのセットアップ方[…]
Homebrewをインストールする
WSLのシェルを起動します。Homebrewのページを開き、「インストール」のところに書かれている1行のスクリプトをコピーして、シェルで実行します。途中でsudo
を実行するので、パスワードを聞かれます。先ほどUNIX用のパスワードを入力しましょう。
次のように表示されたら、RETURN
キーを押します。
Press RETURN to continue or any other key to abort
Homebrewのダウンロードやインストールが実行されます。
macOS上で実行するときは、これだけで完了なのですが、WSL上でもう少し作業が必要です。
brew
やHomebrewでインストールしたパッケージがPATH
に含まれるようにするため、次のページの「Install」のところに書かれているスクリプトを実行します。
test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile
完了したら、次のように実行します。
$ brew install hello
開発環境が入っていないためにエラーになる
私の環境ではエラーになってしまいました。
Error: patchelf must be installed: brew install patchelf
Warning: Bottle installation failed: building from source.
Error: The following formula
patchelf
cannot be installed as binary package and must be built from source.
Install Clang or run `brew install gcc`.
Homebrewはバイナリーインストールができないときに、ソースからビルドしてインストールを行うのですが、そのため、開発環境が入っていないためです。
指示されているようにgcc
のインストールを試みます。
$ brew install gcc
しかし、これもエラーになってしまいました。エラーメッセージは同様です。開発環境が必要と表示されています。
Homebrew自体が動作するためには、開発環境が必要です。
Clangをインストールする
Ubuntuなので、apt-get
でインストールできます。Homebrewのメリットとしてシステム汚染しないことを挙げましたが、開発環境だけは必要でした。
gcc
でも良いのですが、好みでClang
をインストールすることにしました。次のように実行します。
$ sudo apt-get update
$ sudo apt-get install clang
依存関係を見ていると、gcc
の一部のパッケージもインストールされたようです。
改めて実行する
開発環境をセットアップしたので改めて実行してみましょう。
$ brew install hello
依存関係のパッケージのビルドやインストールが行われます。完了したら実行してみましょう。
$ hello
Hello, world!