2019年1月31日木曜日

Windows Subsystem for LinuxにHomebrewを入れるアレコレ

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の例のように)適切なヘッダの場所を指定する必要があると思います。