HomebrewをWindows上で使えるようにする

Homebrewは元々はMac用のパッケージマネージャーです。そのHomebrewがv2.0からLinuxを正式サポートしました。同時にWSL(Windows Subystem for Linux)も正式にサポートしました。

この記事では、WSL上でHomebrewをセットアップする方法を解説します。

目次

記事の更新情報

2022年7月24日

  • Windows 11 Pro 21H2での動作を確認しました。 (記事作成時はWindows 10でした)
  • 古いコマンドを新しいコマンドに置き換えました。
  • インストール時に発生するエラーcurlエラーについて追記しました。
  • インストール時の操作を詳しくしました。
  • 「開発環境をインストールするべきか」を追加しました。

Homebrewについて

HomebrewはmacOS上で広く使われているパッケージマネージャーです。Homebrew経由でインストールすると、次のような良いことがあります。

  • 依存関係があるソフトを同時にインストールできる
  • インストールしたソフトの更新やアンインストールが簡単にできる

Windowsの場合は、システム設定の「アプリと機能」から簡単にアンインストールできるソフトが多いので、アンインストールできる部分のメリットはあまり感じないかもしれません。

しかし、ソフトの更新や依存関係の解決などはメリットを感じるのではないでしょうか。

また、インストーラを使えば簡単にインストールできるから不要だという考えもあると思います。Homebrewを使うと、コンソールで1つのコマンドを実行するだけで、以下を実行してくれます。インストーラをダウンロードしてインストールするよりも簡単ではないでしょうか。

  1. 指定したパッケージ本体をダウンロードする。
  2. 依存関係があるパッケージをダウンロードする。
  3. ダウンロードしたパッケージを順番にインストールする。
  4. 必要なスクリプトの生成や実行を行う。

WSL上でメリットはあるのか?

WSL上で動作しているLinuxディストリビューションには元々パッケージマネージャーが入っています。ではメリットはあるのでしょうか?実はあります。たとえば、次のような点です。

  • Linuxディストリビューションに依存せずに、パッケージを使用できる
  • ホームディレクトリ配下にインストールされるので、システム環境を汚染しない

WSL上で使用するLinuxディストリビューションには、aptなどのシステムレベルのパッケージマネージャーがあります。しかし、インストール可能なパッケージはディストリビューションにより異なります。Homebrew経由の場合は、Homebrewが解決するのでディストリビューションに依存しません。

Windows版の動作環境

Windows版は、WSL(Windows Subsystem for Linux)で動作します。WSLはLinuxのバイナリをWindows上で動かす互換レイヤーです。そのため、正確にはHomebrewのWindows版が登場したのではなく、Linux版が登場し、WSL上でも正式にサポートされているというのが正しいでしょう。

WSLが必要になるので、先にWSLをセットアップする必要があります。WSLのセットアップ方法については、次の記事をご覧ください。

Homebrewをインストールする

WSLのシェルを起動します。HomebrewのWebページを開き、「インストール」のところに書かれている1行のスクリプトをコピーして、シェルで実行します。

macOS(またはLinux)用パッケージマネージャー — Homebrew

たとえば、関連記事に従ってインストールした場合はUbuntuを起動し、表示されたシェルで右クリックすると、コピーしたスクリプトが貼り付けられます。

途中でsudoを実行するので、パスワードを聞かれます。WSLセットアップ時に設定したUNIX用のパスワードを入力してください。

==> Checking for `sudo` access (which may request your password)...
==> Select a Homebrew installation directory:
- Enter your password to install to /home/linuxbrew/.linuxbrew (recommended)
- Press Control-D to install to /home/akira/.linuxbrew
- Press Control-C to cancel installation
[sudo] password for akira:

また、タイミングが悪いと次のようにホストが見つからないというエラーが表示されることがあります。その場合は、再度実行してください。

curl: (6) Could not resolve host: raw.githubusercontent.com

次のように表示されたら、RETURNキーを押します。

Press RETURN/ENTER to continue or any other key to abort

Homebrewのダウンロードやインストールが実行されます。

macOS上で実行するときは、これだけで完了なのですが、WSL上ではもう少し作業が必要です。

brewやHomebrewでインストールしたパッケージが、環境変数の`PATH`に含まれるようにするため、次のページの「Install」のところに書かれているスクリプトを実行します。(1行ずつコピーして実行します)

Homebrew on Linux — Homebrew Documentation

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はバイナリーインストールができないときに、ソースからビルドしてインストールを行います。そのため、WSL側に開発環境が入っていないとエラーになります。

指示されているようにgccのインストールを試みます。

$ brew install gcc

しかし、ここでもエラーが発生しました。エラーメッセージは先ほどと同様で、開発環境の存在が必要と表示されました。

Homebrew自体が動作するためにも、開発環境が必要です。

clangをインストールする

Ubuntuなので、aptでインストールできます。Homebrewのメリットとしてシステム汚染しないことを挙げましたが、開発環境だけは必要であることがわかりました。

gccでも良いのですが、私の好みでclangをインストールすることにしました。次のように実行します。

$ sudo apt update
$ sudo apt install clang

依存関係を見ていると、gccの一部のパッケージもインストールされたようです。

開発環境をインストールするべきか?

上にも書いた通り、Homebrewはバイナリインストールができないときにソースからビルドしてインストールします。インストール時にもgccのインストールを推奨すると表示されています。Ubuntu 20.04.4 LTSではエラーが起きなかったのですが、gccclangのどちらかをインストールしておいた方が良いと思います。

あらためて実行する

開発環境をセットアップしたのであらためて実行してみましょう。

$ brew install hello

依存関係のあるパッケージのビルドやインストールが行われます。完了したら実行してみましょう。

$ hello
Hello, world!

著書紹介

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Akira Hayashi (林 晃)のアバター Akira Hayashi (林 晃) Representative(代表), Software Engineer(ソフトウェアエンジニア)

アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ソフトウェアの受託開発、技術書執筆、技術指導・セミナー講師。note, Medium, LinkedIn
-
Representative of RK Kaihatsu. Software Engineer Specializing in Development for the Apple Platform. Specializing in contract software development, technical writing, and serving as a tech workshop lecturer. note, Medium, LinkedIn

目次