【小ネタ】Windows10のWSLでbrewコマンドを使う

2019.10.11

はじめに

こんにちは!AWS事業本部、岩本町オフィスの島川です。

macOS用のパッケージマネージャーであるbrewコマンド。
Githubで公開されているようなコマンドのインストールはこれが前提であることが多いです...。

Windows端末を使っていて、開発・検証をやろうとするとぶつかる壁であります。

そこで今回Windows10の機能であるWSL(Windows Subsystem for Linux)でUbuntuを起動し、brewでコマンドをインストールするまでをやってみました。

インストールしてみるコマンドはremind101/assume-roleです。

※AWSのAssume Role機能の実行を便利にしてくれるコマンド

なお、WSLを使う理由としては下記のとおりです。

  • すぐに使える。用意にかかる時間が少ない。
  • リソース消費が少ない。
  • Linuxだから取り回しが良い。何かと都合がよい。

WSLの初期セットアップについては下記ブログが参考になります。

Windows 10 上にUbuntu18.04をインストールしPython3を実行するまで(Windows Subsystem for Linux)

やってみた

環境について

  • Windows10 バージョン1809
    • WSLはバージョン1709以降である必要があるので注意です
  • WSL Ubuntu 18.04 LTS
    • Microsoft Storeからインストール済

brewコマンドをインストールする

  • まずはbrewコマンドを打ってみる
$ brew

Command 'brew' not found, but can be installed with:
sudo apt install linuxbrew-wrapper

入っていなかったようで、インストールコマンドを教えてくれました。linuxbrew-wrapperはその名の通りlinux版のbrewです。

  • パッケージをアップデートする。
$ sudo apt update
  • brewコマンド(linuxbrew-wrapper)をインストール
$ sudo apt install linuxbrew-wrapper
  • brew doctorでコマンドをチェック
$ brew doctor

私の環境ではパーミッションと環境変数で怒られたので以下作業を行いました。

$ echo 'umask 002' >> ~/.bash_profile
$ echo 'export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"' >> ~/.bash_profile
$ echo 'export PATH="/home/linuxbrew/.linuxbrew/sbin:$PATH"' >> ~/.bash_profile

Terminalを再起動して再度実行

$ brew doctor
Your system is ready to brew.

診断OKでした。

brewを使ってコマンドをインストールする

$ brew install remind101/formulae/assume-role

→インストールできたので実行してみます!

$ assume-role
 assume-role is a command line tool to help assume roles through a bastion account with MFA.
 Store your bastion account credentials here ~/.aws/credentials

 Usage: assume-role [account_name] [role] [mfa_token] [aws-region]

 account_name          account id or alias
                       aliases stored in ~/.aws/accounts as JSON {"alias": account_id}
                       [default 'default']
 role                  the role to assume into the account
                       [default 'read']
 mfa_token             The MFA token for the user
                       only valid if not using SAML for auth

 aws_region            region to assume into default set in ~/.aws/config

PATHもちゃんと通ってます。便利。

remind101/assume-roleコマンドのセットアップについてはこちら参考になります。

[小ネタ]ディレクトリ移動した際に自動で一時クレデンシャルを取得・設定する

さいごに

Windowsでも簡単にLinux環境を用意することができるWSLぜひ使ってみてください。

おまけ

ホスト側とファイル共有したい

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs          238G   62G  176G  26% /
none            238G   62G  176G  26% /dev
none            238G   62G  176G  26% /run
none            238G   62G  176G  26% /run/lock
none            238G   62G  176G  26% /run/shm
none            238G   62G  176G  26% /run/user
C:              238G   62G  176G  26% /mnt/c

/mnt/cにCドライブがマウントされているようで、ここを使ってファイルのやり取りができました。