macOS用のパッケージ管理システム『Homebrew』が、v.1.9のリリースよりLinuxとWindowsのベータサポートを開始しました。ここでは、Windowsに標準で付属するMicrosoftのLinuxサブシステムである『Windows Subsystems for Linux』(WSL)を導入し、Homebrewを使うための環境構築について記します。
※本稿掲出時点ですでにv.2.0.0がリリースされています。内容としてはほぼ同一なので、特に書き換えたりはしていません。
Windows Subsystem for Linuxを導入する
Windowsの『設定』>『アプリ』と進み、右側の『アプリと機能』を開きます。左側の『Windowsの機能の有効化と無効化』から『Windows Subsystem for Linux』を探し、チェックを入れて [OK] を押せば導入されます。
次に、Microsoft StoreからLinuxを導入します。『Ubuntu』や『Debian』など好きなディストリビューションで検索してみて、見つかればそれを導入しましょう。以降の解説ではDebian (9/stretch)を導入した想定で作業を進めています。
Homebrewをインストールする前準備
Linux側にある程度のパッケージが入っていることが要求されます。スタートからさきほどインストールした『Debian GNU/Linux』を実行すると、ターミナル画面が開きます。コマンドを実行していきましょう。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install curl
$ sudo apt-get install git
$ sudo apt-get install ruby
$ sudo apt-get install binutils
$ sudo apt-get install build-essentials
このようにして導入すれば、Homebrewの実行に不足ないと思います。
Homebrewのインストールとインストール後の後始末
以下のコマンドでHomebrewが導入されます。
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
パスを追加する必要があるので、~/.bashrc を編集します。
$ vi ~/.bashrc
以下のような感じでパスを追加します。
PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"
保存したら source ~/.bashrc で設定を読み込んだあと、以下のコマンドを実行すると初期設定が行われ、ヘルプメッセージが表示されるはずです。
$ brew help
ここで gcc のインストールを推奨されるので、以下のようにして導入します。
$ brew install gcc
PHPBrewのインストール
Homebrew上でのPHPBrewのインストールで詰まったので、メモを残しておきます。
詰まった原因としてはHomebrew側では gcc をインストールしてありますが、Linux側としてはインストールしていなかったことです。つまり、以下のコマンドで解決できます。
$ sudo apt-get install gcc
これでgccが実行できるようになるので、以下のようなコマンドでphpbrewが使えるようになりました。
$ curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
$ chmod +x phpbrew
$ sudo mv phpbrew /usr/local/bin/phpbrew
$ phpbrew init
$ source ~/.phpbrew/bashrc
phpbrew lookup-prefix homebrew
ln -s /home/linuxbrew/.linuxbrew/Cellar /home/linuxbrew/.linuxbrew/Homebrew/Cellar
source ... の行は、~/.bashrc の適切な場所にも入れておくといいと思います。最後の行は、PHPBrew側がハードコーディングでパスを見ているようなので、見つからないパスをシンボリックリンクで解決させています(雑)。
$ sudo apt-get install pkg-config
$ sudo apt-get install make
$ sudo apt-get install zlibc
$ sudo apt-get install libxslt-dev
$ sudo apt-get install libssl-dev
$ sudo apt-get install libcrypto++-dev
$ phpbrew install -j $(nproc) 5.6 +default +fpm -bz2 -zip -openssl=/home/linuxbrew/.linuxbrew/
いくつか - なオプションを設定しているのは、ヘッダ周りでエラーを吐いたものです。開発環境には不要なので、とりあえずそのまま。本来であれば(opensslの例のように)適切なヘッダの場所を指定する必要があると思います。