WSL(Ubuntu 18.04)でHomebrewを使う
2019-07-19
azblob://2022/11/11/eyecatch/2019-07-19-homebrew-on-wsl-000.png

ハロー、和田です。昨日は蒸し暑かったので、FIXERボドゲ会でハコオンナをやりました。花瓶の中身を覗いたらハコオンナが待ち構えていた時の恐怖、忘れられない。

macOS用のパッケージマネージャーであるHomebrewが2.0.0でLinuxとWindows 10 (with WSL)に対応してから久しいですが、WSLのUbuntu 18.04にインストールしようとしたら詰まったところがあったので忘備録としてまとめておきます。よく考えたらLinux使い的には当たり前な事でしたけど。

Homebrewとは

HomebrewはUbuntu標準のパッケージマネージャーaptと比べ、次のような特徴があります。

  • ホームディレクトリにパッケージをインストールできるため、sudoが不要
  • 使用しているディストリビューションでパッケージ化されていないソフトウェアもインストール可能
  • 最新バージョンのパッケージをインストールできる
  • クロスプラットフォームなので、macOSとWindows(WSL)とLinuxで同じパッケージマネージャーを使える

最後に関してはWindowsだとWSLでしか使えないのに何言ってんだって感じではありますが、最新版のパッケージを持ってこれるのは素直に嬉しいです。aptだと雑にインストールしたら古いバージョンしか取ってこれないとかザラにあるので。

インストール手順

Homebrew on Linuxの通りに進めていきます。

まずはupdateとupgradeから。

sudo apt update && sudo apt upgrade

必要な依存関係をインストールします。

sudo apt-get install build-essential curl file git

Homebrew本体のインストール。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"

PATHに追加してコマンドとして利用できるようにします。Homebrewは/home/linuxbrew/.linuxbrew~/.linuxbrewにインストールされるので、とりあえず下の両方のコマンドを実行すればいい感じにPATHに追加してくれます。testはファイル/ディレクトリが存在しているかを調べるコマンドです。知らなかった。

test -d ~/.linuxbrew && eval $(~/.linuxbrew/bin/brew shellenv)
test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)

これだけだとターミナルを閉じたらまたPATHに追加しなおさないといけないので、起動時に読み込まれるスクリプトにも追加します。ドキュメントに書いてあるように、Debian/Ubuntuは~/.profileでCentOS/Fedra/RedHatは~/.bash_profileです。Ubuntuにインストールしているので下のコマンドだけ実行すれば十分。

echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile

これでターミナルを閉じてもbrewを使い続けられるはずです。ここまで来たら試しにbrewを使ってパッケージを追加してみましょう。

brew install sl

slが走れば勝ち。

夜空を駆ける蒸気機関車

ハマったポイント

さて、Homebrewには環境構築の手助けをしてくれるbrew doctorというコマンドがあります。筆者はよくbrew dockerってタイポします ?

それでは、doctorに悪いところを見てもらいましょう。

$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: umask is currently set to 000. Directories created by Homebrew cannot
be world-writable. This issue can be resolved by adding "umask 002" to
your ~/.bash_profile:
  echo 'umask 002' >> ~/.bash_profile

基本的には指示に従って、表示されたコマンドを表示していけばオッケーです。ここにハマリポイントがあって、脳死で言われた通り

echo 'umask 002' >> ~/.bash_profile

を実行してしまうと、umask 002しか書かれていない~/.bash_profileが作られてしまって、次回起動時にカラースキーマなどが死にます。~/.bash_profileが存在するとbashの設定が書かれている~/.bashrcが読み込まれないためです。~/.profileに書き込みましょう。

echo 'umask 002' >> ~/.profile

もしくは、~/.bash_profile~/.bashrcを読み込ませてもいいです。

echo 'umask 002' >> ~/.bash_profile
echo 'source ~/.bashrc' >> ~/.bash_profile

はい。

おわりに

脳死でコマンドを実行すると死ぬという教訓を得ましたが、とりあえずHomebrewが使えるようになったのでOKです。これで次の記事が書ける。