🧳

今更ながら重い腰を上げてWSL2へHomebrewをインストールした

2021/02/28に公開

はじめに

前回の記事に続きHomebrew関連の記事になります。

最近、WindowsのWSL2とM1 Macbookの環境を行き来することが多く、それぞれの環境でパッケージマネージャーを使いパッケージの依存関係を管理していました。WSL2ではデフォルトで使用できるapt 、Macでは3.0.0にて最近M1チップに対応したHomebrewというパッケージマネージャーをそれぞれ使用しています。

それぞれのパッケージマネージャで使用するコマンドが異なるため、環境が変わったときにコマンドを暗記していても瞬間的に出てこないことがありました。そこでWSL2にもHomebrewが対応しているという情報を目にして今更ながらWSL2にHomebrewを導入しました。

HomebrewといえばmacOSユーザー の特権という先入観でmac OSだけで使えるパッケージマネージャーかとずっと思っていたのですが、公式サイトを確認すると。

The Missing Package Manager for macOS (or Linux)
(macOS(またはLinux)用パッケージマネージャー)

と謳われておりLinuxもサポートしていることに驚きました。

これは過去にLinuxbrewといった名前で開発されていたパッケージマネージャーがあったことに関係するようです。2019年2月に公開された2.0.0よりLinuxとWSLが公式にサポートされるようになり現在へと至ります。

今までずっとaptを使ってパッケージ管理をしてきました。通常ユーザーで作業する際にaptだと管理者権限(sudoコマンド)必須というのが少し気になっていました。Homebrewではホームディレクトリ内でパッケージを管理するため sudoを使わないというのも魅力的です。また、MacでHomebrewを使っていることもあり、それぞれのプラットフォームでコマンドが共通して使えるという点にとても魅力を感じました。パッケージマネージャーを乗り換えるのは少し抵抗がありますが重い腰を上げてこの機会にaptからHomebrewへ乗り換えました。

Homebrewの公式サイト(日本語)はこちらです。
https://brew.sh/ja/

環境

  • Windows 10(20H2)
  • WSL2(Ubuntu 20.04 LTS)

Homebrewのインストール

インストールの準備

Homebrewを導入するにあたりパッケージを最新に更新しておきます。

$ sudo apt update

またHomebrewを導入するのに以下の最低条件を満たす必要があります。

  • GCC 4.7.0
  • Linux 2.6.32
  • Glibc 2.13
  • CPU(64-bit x86_64)

現在使っているPCではx86_64のCPU上でWSL2(Ubuntu 20.0.4)が動作しているため、以下のパッケージをコマンドでインストールします。

$ sudo apt-get install build-essential curl file git

インストールスクリプトの実行

必要条件を満たしたらターミナル上で以下のワンライナーを実行します。

これはHomebrewのトップページに表示されているワンライナーになります
インストールワンライナーの画像
MacとLinux共通で使用する

WSL2のターミナル上で一般ユーザーに切り替えてから下記を実行します。

$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

コマンドを実行するとインストールされるスクリプトと、インストールで作成されるディレクトリが一覧で表示されます。
ここからはEnterで対話形式にて進めていきます。

インストールと同時に初期設定をするため完了までしばらく時間がかかります。

ターミナルに==> Installation successful!と表示されれるとインストールが完了です。

しかしまだWarningが表示されており、brewコマンドを使うことができません。
引き続きターミナルに表示されたNext stepsと公式ドキュメントを参考に初期設定を進めます。

Homebrewの初期設定

パスを通してコマンドを使えるようにする

コマンドを叩けるように現在使用しているシェルのプロファイルにパスを追記する必要があります。
ターミナルに表示されている指示どおりに公式ドキュメントから以下のコマンドを順番に実行します。

$ 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

設定を上手く反映させるためにシェルを再起動します。

# シェル再起動
$ exec $SHELL -l

これでパスの追加が完了です。
試しにbrewと打って以下のようなコマンド候補が返ってくればパスが上手く通っています。

$ brew

Example usage:
  brew search [TEXT|/REGEX/]
  brew info [FORMULA...]
  brew install FORMULA...

  ...

導入されたバージョンは以下のコマンドで確認できます。

$ brew --version

Homebrew 3.0.2
Homebrew/linuxbrew-core (git revision b2e4cd; last commit 2021-02-27)

これで導入は完了です。お疲れ様でした。

brewコマンド実行の際に怒られる場合はおなじみのbrew doctorで細かく指摘を受けることができます。

HomebrewではパッケージをFomulaと呼び、以下のようにインストールします。

# treeコマンドをHomebrewでインストール
$ brew install tree

インストールが完了すると同時にパスも通るためターミナルからすぐに実行できます。

インストールされた場所の確認。

$ which tree

/home/linuxbrew/.linuxbrew/bin/tree

パスを見て分かるように、WSLにインストールしたHomebrewではパッケージを/home/linuxbrew/.linuxbrewの配下で管理します。
ホームディレクトリ配下で完結するため、システム環境をあまり汚さないのがいいですね。

さいごに

今回、WSL2の環境にパッケージマネージャーであるHomebrewをインストールしてみました。
インターネットの情報ではパッケージインストールにHomebrewを使って解説している情報も多く、Ubuntuだとその都度aptコマンドで置き換えてインストールするなど少し手間でした。今回Homebrewが使えるようになったことで macOSと同じ感覚で操作できる、コマンドの管理、パッケージの管理がしやすいなどの大きなメリットがあると感じました。

なによりsudoを使わずに手軽にパッケージマネージャーを使えるのが大きいです。Homebrewを思い切って導入したことでWSL2での開発がさらに捗りそうです。

最後まで読んでいただきありがとうございました。

参考

GitHubで編集を提案

Discussion