Windows Subsystem for Linuxと認証プロキシ

about

認証プロキシと戦うエンジニアがWindows10にWindows Subsystem for LinuxUbuntuを入れた戦いの記録。 Ubuntuを入れて、apt-get updateするまで。

Ubuntuをインストールするまで

インストールできなかったMS推奨の方法と、インストールができたMS非推奨の方法について述べる。

ストアからはインストールができなかった

普通の人*1は下記の記事のようにインストールすればスコッと導入できる。
Windows Subsystem for Linuxをインストールしてみよう!

弊社の環境下ではストア*2からのダウンロードは、プロキシのブラックリストに入っているらしい。
Ubuntuどころか標準インストールアプリは何一つとしてアップデートやインストールが出来なかった。*3

lxrunを使う

困った、Ubuntuが使えないって思っていたら、こんなMSのリファレンスを見つけた。
Command Reference

lxrun.exe is deprecated after the Fall Creators Update.

とか書いてあるけど気にせず実行する。 藁にもすがる思いでPowerShellに以下のコマンドを発行。

lxrun /install /y

すると沈黙のストアとは正反対にグイグイUbuntuがダウンロードされていく。 Lets' noteもきっと本望であろう。 このインストールはダウンロードが終わってからめちゃくちゃ時間がかかるので、あせってシェルの再起動等しないように。 インストールが終わるとユーザの作成やロケールの設定があるのでよしなに。

apt-getできるようする

Ubuntuに認証プロキシを読ませる

Ubuntuが入って満足はしてはいけない。認証プロキシはUbuntuを外に出してくれない。 クソみたいにいつもパスワードの入力を求める認証プロキシの設定をUbuntuになめさせる。

環境変数を利用

以下のような形で環境変数にプロキシの設定を入れる。

export http_proxy=http://<ProxyUser>:<ProxyPassword>@<ProxyFQDN>:<ProxyPort>
export https_proxy=http://<ProxyUser>:<ProxyPassword>@<ProxyFQDN>:<ProxyPort>

ここのユーザ名・パスワードはUbuntuのではなく、君の社畜番号とかを入れる。 .zshrcとかに記述しておけばよい。

/etc/apt/apt.confを利用

aptの設定ファイルにプロキシの設定を書き込む方法もある。

Acquire::http::proxy "http://<ProxyUser>:<ProxyPassword>@<ProxyFQDN>:<ProxyPort>";
Acquire::https::proxy "http://<ProxyUser>:<ProxyPassword>@<ProxyFQDN>:<ProxyPort>";

行末の;を忘れると動かないので注意。

gitにも設定

.gitconfigファイルにも認証プロキシの設定を入れておこう。

[http]
proxy = http://<ProxyUser>:<ProxyPassword>@<ProxyFQDN>:<ProxyPort>

[https]
proxy = http://<ProxyUser>:<ProxyPassword>@<ProxyFQDN>:<ProxyPort>

apt-getしてみる

ここにも落とし穴がある。君はすぐにsudo apt-get updateとかして動かないことに絶望する。 そりゃそうだ、sudoは一般ユーザの環境変数を継承しない。-Eっていうオプションが必要。

sudo apt-get update

リポジトリがどんどん更新されていく。刻の涙を君は流す。

その前にaptのレポジトリのミラーを日本に変えておくともっと嬉しい。

sudo sed -i.bak -e "s%http://us.archive.ubuntu.com/ubuntu/%http://ftp.iij.ad.jp/pub/linux/ubuntu/archive/%g" /etc/apt/sources.list

まとめ

  1. ストアはつかえない。lxrunしよう
  2. 認証プロキシの設定をかまそう
  3. sudoするときは環境変数が引き継がれないことに注意

TeraTermしてる同僚を横目に、Windows Subsystem for Linuxを導入してコーナーで差をつけろ!

*1:認証プロキシと無縁な人の意

*2:Windows10標準搭載のストアアプリ

*3:こっちのほうがセキュリティ的にどうなのよ🤔