こんにちは寝る

古い記事の情報は参考程度にお願いします

WSL2を構築したメモ

概要

やったことをメモるだけです。

Docker for windowsをWSL2側で利用する

ディストリビューション用意

複数ディストリビューションを管理できるっぽいけど今回はWindows StoreからUbuntu20.04をインストール。

Windows Terminalもインストールしておくと非常に捗る。

もしデフォルトのユーザーを変えたければ

ubuntu config --default-user [user_name]

Ubuntuを最新にする

$sudo apt-get update
$sudo apt-get upgrade

anyenvを入れる

# Git入ってなかったら入れてください
$git clone https://github.com/anyenv/anyenv ~/.anyenv
$echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc
$exec $SHELL -l
$anyenv init
$echo 'eval "$(anyenv init -)"' >> ~/.bashrc
$anyenv install --init

# anyenv update したい場合
$mkdir -p ~/.anyenv/plugins
$git clone https://github.com/znz/anyenv-update.git ~/.anyenv/plugins/anyenv-update
# ↑でPlugin入れたら今後は以下のコマンドだけでOK
$anyenv update

# あとは好きなxxenvをインストールする

rbuenvを利用する場合

いろいろ下準備が必要

$anyenv install rbenv
$exec $SHELL -l
# Railsで必要なやつも入れておく(gem構造によってはこれでも足りない、nodeも必要になる?)
$sudo apt-get install -y make gcc libssl-dev libreadline-dev zlib1g-dev build-essential libxml2 libxml2-dev libcurl4-openssl-dev libmysqlclient-dev 
# このプラグインが無いとrubyがビルドできない?
$git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$rbenv install xxx
$rbenv rehash
$rbenv global xxx

GCPのgcloudコマンドを使えるようにする

https://cloud.google.com/sdk/docs/quickstart-linuxLinux用を利用する

$anyenv install pyenv
$exec $SHELL -l
# 執筆段階では3.xはバージョン制限があるので、2.x系にする
$pyenv install 2.7.18
$pyenv global 2.7.18
# * 64bit版 gcloud
$curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-308.0.0-linux-x86_64.tar.gz
$tar zxvf google-cloud-sdk-308.0.0-linux-x86_64.tar.gz google-cloud-sdk
$./google-cloud-sdk/install.sh
# 匿名の利用状況?を送信してよいかどうか効かれるので(y or N)で回答
# あとはパスを通すだけ
$exec $SHELL -l
# 以下のコマンドはあえてコピペで動かないようにしています、確認し削除してください
$rhogem -rf google-cloud-sdk-308.0.0-linux-x86_64.tar.gz
$gcloud init
# ターミナルの指示に従ってください
$gcloud components update
# もしWindows側でgcloudをインストールしている場合は警告が出ますので任意で削除してください(削除推奨)

Docker for windows を使う場合の注意点

各個人によって必要だったり必要なかったりする

# ファイル所持者がrootになる可能性があるので、デフォルトユーザーをrootにするか所持させる
$chown -R hoge:hoge ...

# PermissionErrorになった場合はこれ、他にも権限周りのErrorで使えるかも
$chmod -R +x ...

※ 調べてみると回避策はいろいろあるみたいですが直ぐにできそうに無いなと言う感じはします。