休みだったのでWindowsの大型アップデートを行ったところ、例のごとくWSLの環境が壊れました。毎回WSLだけ壊れるのが不思議です。
環境の再設定を行う際にSymantecの問題(WSL2で外部ネットワークにつながらない理由がSymantec Endpoint Protectionだった話 - 趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning)が面倒だったので暫定的な対策を行いましたのでメモを残しておきます。
そろそろSymantecの方で解決して欲しいのですが…。
WSL2の設定
今回はUbuntu20.04にしてみました。設定は以下サイトのとおりに行いました。
Windows Subsystem for Linux 2(WSL 2)をセットアップしてみた | DevelopersIO
windows上でproxyサーバを起動
以下サイトのとおりですが、stoneを使ってproxyを設定します。
sexeでサービスに登録しておくことで常時stoneが起動することになります。 その都度起動する場合は不要かと思います。
Ubuntuのproxyの設定
個々の設定が必要かと思いますが、とりあえず全体の設定のみを書いておきます。
以下サイトをほぼトレースしています。
https://blog1.mammb.com/entry/2021/10/27/090000#apt-update--apt-upgrade
WSLのIPアドレスはその都度割り当てられ、/etc/resolv.confに記述されます。
cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf: # [network] # generateResolvConf = false nameserver 172.22.80.1
これを使ってproxyを設定するため、.bashrcに以下を追加します。
if [ -z "$http_proxy" ]; then export http_proxy=http://$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):8080 export https_proxy=${http_proxy} export HTTP_PROXY=${http_proxy} export HTTP_PROXY=${https_proxy} fi
これで、sudoに元の環境変数を引き継ぐオプション-Eのつけてapt等は通るようになります。
sudo -E apt update sudo -E apt upgrade -y
condaの設定
pythonをよく使うのでcondaの設定も書いておきます。
condaは以下のコマンドでproxyを設定できます。その都度設定するのが面倒であれば、condarcに書いても同じです。
conda config --set proxy_servers.http http://$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):8080 conda config --set proxy_servers.https http://$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):8080
参考サイト:UbuntuにインストールしたAnacondaへのプロキシの通し方 - kottasのブログ