【WSL(Windows Subsystem for Linux)】Proxy環境でのインストール

Proxy環境でWSLの利用をあきらめていましたが、コマンドラインを使用してインストールができたので、忘備録としてまとめます。

追記：インストール用のバッチファイルを作成したので、本稿の最後にまとめて掲載しております。

# 環境

- Windows 10 Pro
- Proxy環境でMicrosoft Storeが使えない

# MS Storeを使用せずにインストール

以下の記事を参考にコマンドラインからインストールしました。

[WSL (Windows Subsystem for Linux) をコマンドラインでインストールする](https://qiita.com/moriai/items/850ee91d60edc91e7b7e)

# Proxy の設定方法

## デフォルトのエディタをVimに設定

```bash
sudo update-alternatives --set editor $(update-alternatives --list editor | grep 'vim.basic')
```

## .bashrcを編集

```bash
vim ~/.bashrc
```

```.bashrc``` に環境変数を追記します。※```id```, ```pass```, ```proxysrv```, ```port```は適宜修正

```bash:.~/.bashrc
export HTTP_PROXY_USER=id
export HTTP_PROXY_PASS=pass
export HTTP_PROXY=http://${HTTP_PROXY_USER}:${HTTP_PROXY_PASS}@proxysrv:port/
export HTTPS_PROXY=${HTTP_PROXY}
```

## aptのプロキシ設定

```/etc/apt/apt.conf``` を新規作成して、以下の内容を記載します。※```id```, ```pass```, ```proxysrv```, ```port```は適宜修正

```bash:/etc/apt/apt.conf
Acquire::http::proxy "http://id:pass@proxysrv:port/";
Acquire::https::proxy "https://id:pass@proxysrv:port/";
```

## そのほかプロキシ設定について

```git```, ```wget```, ```pip```などのプロキシ設定は、以下の参考サイトがおすすめです。本稿では割愛いたします。

# パッケージを更新

```bash
# リポジトリ一覧を更新
sudo apt update -y
# パッケージを更新
sudo apt upgrade -y
```

# まとめ

## Ubuntuインストール用バッチ

※```ProxyPassword```, ```ProxyUsername```, ```ProxyServerName```は適宜修正

```powershell:install_Ubuntu.ps1
# You need to Execute this command and reboot in advance.
# Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

# Password Setting
$secPasswd=ConvertTo-SecureString <ProxyPassword> -AsPlainText -Force
# User and Credential Setting
$myCreds=New-Object System.Management.Automation.PSCredential -ArgumentList <ProxyUsername>,$secPasswd

# Download Image
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-1804 -OutFile $home/Ubuntu.appx -Proxy <ProxyServerName> -proxyCredential $myCreds

# Unzip File
Rename-Item $home\Ubuntu.appx $home\Ubuntu.zip
Expand-Archive $home\Ubuntu.zip $home\Ubuntu

# Create Shortcut in Desktop
cd $home\Ubuntu
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ubuntu1804.lnk")
$Shortcut.TargetPath = "$home\Ubuntu\ubuntu1804.exe"
$Shortcut.Save()
```

## Proxy setting用バッチ

※```id```, ```pass```, ```proxysrv```, ```port```は適宜修正
```<suPassword>``` には、su(スーパーユーザー)のパスワードを指定

```bash:setting_ubuntu.sh
#!/bin/bash

# setting http proxy
cat <<'EOF' >> ~/.bashrc

# http proxy setting
export HTTP_PROXY_USER=id
export HTTP_PROXY_PASS=pass
export HTTP_PROXY=http://${HTTP_PROXY_USER}:${HTTP_PROXY_PASS}@proxysrv:port/
export HTTPS_PROXY=${HTTP_PROXY}

# git proxy setting
git config --global http.proxy ${HTTP_PROXY}
git config --global https.proxy ${HTTPS_PROXY}
git config --global url."https://".insteadOf git://
EOF

# setting apt proxy
echo <suPassword> | sudo tee /etc/apt/apt.conf <<EOF > /dev/null
Acquire::http::proxy "http://id:pass@proxysrv:port/";
Acquire::https::proxy "https://id:pass@proxysrv:port/";
EOF


# setting wget proxy
echo <suPassword> | sudo tee -a /etc/wgetrc <<EOF > /dev/null

# wget proxy setting
https_proxy = http://id:pass@proxysrv:port/
http_proxy = http://id:pass@proxysrv:port/
ftp_proxy = http://id:pass@proxysrv:port/
EOF
```

# 参考

[Proxy内環境でWindows10にWSL開発構築する手順 #LinuxでProxy認証を突破する。](https://qiita.com/sachioksg/items/289e40d69382b1d09811#linux%E3%81%A7proxy%E8%AA%8D%E8%A8%BC%E3%82%92%E7%AA%81%E7%A0%B4%E3%81%99%E3%82%8B)

以上