skip to content
barorin&

WSL2の環境管理まとめ|環境の複製・分離・Ubuntuのアップグレード

/ 6 min read

Table of Contents

はじめに

WSL2は、環境をまるごとファイルに書き出して別の名前で復元できます。この仕組みが分かると、壊す前提で試すことができるようになります。

環境の複製と、Ubuntuのバージョンアップの手順をまとめました。

環境を確認する

Terminal window
# インストール済みの環境と状態を表示
$ wsl -l --verbose
# 実行中のものだけ
$ wsl -l --running

--verbose-v)を付けると、名前・状態・WSLのバージョンが表になって出ます。

環境を複製して分ける

用途ごとに環境を分けたいときは、エクスポートしてから別名でインポートします。

Terminal window
# 環境をtarファイルに書き出す
$ wsl --export Ubuntu Ubuntu-copy.tar
# 別の名前で取り込む
$ wsl --import Ubuntu-copy C:\wsl\Ubuntu-copy C:\tmp\Ubuntu-copy.tar

--import の引数は、登録する環境名 / インストール先のディレクトリ / 取り込むtarファイルの順です。インストール先は既存の環境と別の場所を指定してください。

起動するときは名前を指定します。

Terminal window
$ wsl -d Ubuntu-copy

不要になったら登録を解除します。

Terminal window
$ wsl --unregister Ubuntu-copy

Ubuntuをアップグレードする

LTSから次のLTSへ上げる手順です。

Terminal window
# まず現状を最新にする
$ sudo apt update && sudo apt upgrade -y
# アップグレード管理ツールを入れておく
$ sudo apt install update-manager-core
# LTSからLTSへ上げる設定になっているか確認する
$ sudo vim /etc/update-manager/release-upgrades
# -> Prompt=lts になっていればOK
# アップグレード可能なバージョンを確認する
$ sudo do-release-upgrade -c
# 実行する
$ sudo do-release-upgrade

以後は表示される指示に従って進めます。終わったらバージョンを確認します。

Terminal window
$ cat /etc/os-release

アップグレード後にDockerを入れ直す

ディストリビューションのバージョンが変わると、aptのリポジトリ設定も新しいコードネームに合わせる必要があります。

Terminal window
# GPGキーの追加
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# リポジトリの追加(lsb_release -cs で現在のコードネームが入る)
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新して入れ直す
$ sudo apt update && sudo apt upgrade -y

$(lsb_release -cs) を使っているので、アップグレード後のコードネームが自動的に入ります。バージョンを直接書いていると、ここが古いままになって apt update が失敗します。

おわりに

WSL2は、環境を壊しても --import で戻せるのが大きな利点です。作業前にexportしておくという一手間を習慣にしておけば、アップグレードも新しいツールの検証も気軽に試せます。

この記事を書いた人

barorinのプロフィール画像

barorin公認会計士

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で実際に使っているコードや、Ubuntu・Raspberry Piの設定メモを書いています。