[メモ] WSL1で動くDebian 10(buster)を12(bookworm)までアップグレードしてみる
新PCをセットアップしているので、よい機会だと思い、WSL上のディストリビューションを最新verまでアップグレードすることにした。
既存の環境とは別にアップグレード版の環境を作ることにする。
旧OSから移行したので、OSイメージは残っている。これを流用する。
mkdir $env:LOCALAPPDATA\wsl\debian12
wsl --import Debian12 $env:LOCALAPPDATA\wsl\debian12 .\Debian.tar.gz --version 1
wsl -d Debian12
ここからはこのサイトに記載の手順に従い、まずは10→11にアップグレード。
apt update && apt upgrade && apt full-upgrade && apt autoremove
sed -i 's#/debian-security/ buster/updates#/ bullseye-security#g' /etc/apt/sources.list
sed -i 's/buster/bullseye/g' /etc/apt/sources.list
export LC_ALL=C
apt update && apt upgrade
apt full-upgrade
debian 11にアップグレードが完了したので、一旦再起動。Powershellに移動して、以下のコマンドを実行。
wsl -t Debian12
wsl -d Debian12
問題なく起動したので、次に11→12にアップグレード。今度はこのサイトを参考に進める。
apt update && apt upgrade && apt full-upgrade && apt autoremove
sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list
export LC_ALL=C
apt update && apt upgrade
ここで私の環境では以下のエラーが発生した。
Selecting previously unselected package usrmerge.
(Reading database ... 36002 files and directories currently installed.)
Preparing to unpack .../usrmerge_37~deb12u1_all.deb ...
Unpacking usrmerge (37~deb12u1) ...
Setting up usrmerge (37~deb12u1) ...
FATAL ERROR:
Can't rename /lib: Permission denied at /usr/lib/usrmerge/convert-usrmerge line 290.
You can try correcting the errors reported and running again
/usr/lib/usrmerge/convert-usrmerge until it will complete without errors.
Do not install or update other Debian packages until the program
has been run successfully.
E: usrmerge failed.
dpkg: error processing package usrmerge (--configure):
installed usrmerge package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
usrmerge
E: Sub-process /usr/bin/dpkg returned an error code (1)
このサイトを参考に、一度再起動を実施。
wsl -t Debian12
wsl -d Debian12
そのうえで、以下のコマンドを実行して、エラーが出なくなることを確認。
/usr/lib/usrmerge/convert-usrmerge
再度アップデートをおこなう。
export LC_ALL=C
apt update && apt upgrade
今度は以下のエラーが発生する。
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
dirmngr : Depends: libldap-2.5-0 (>= 2.5.4) but it is not installed
gnupg : Depends: gpgv (>= 2.2.40-1.1) but 2.2.27-2+deb11u2 is installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
書いてある指示に従い修正する。
apt --fix-broken install
再度アップデートをおこなう。
apt update && apt upgrade
apt full-upgrade
debian 12にアップグレードが完了したので、一旦再起動。Powershellに移動して、以下のコマンドを実行。
wsl -t Debian12
wsl -d Debian12
debian12にアップグレードされたことを確認する。
cat /etc/os-release
WSLのディストリビューションの名前を変更する。
Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\* | ? { $_.DistributionName -eq "Debian" } | Set-ItemProperty -Name DistributionName -Value DebianOld
Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\* | ? { $_.DistributionName -eq "Debian12" } | Set-ItemProperty -Name DistributionName -Value Debian
デフォルトのユーザを変更する。
Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\* | ? { $_.DistributionName -eq "Debian" } | Set-ItemProperty -Name DefaultUid -Value 1000
最後にデフォルトのディストリビューションを切り替える。
wsl --set-default Debian
細かい動作は確認していないが、これで切り替えは完了。