WSL2でsnapdが動いてなかった件

背景

hugoの環境を構築する過程で、以下のエラーに遭遇した。snapdが動いてないのがダメらしい。

$ sudo snap install hugo
error: cannot communicate with server: Post http://localhost/v2/snaps/standard-notes: dial unix /run/snapd.socket: connect: no such file or directory

ちなみにaptでもhugoはインストールできたが、hugoのバージョンがとても古く使い物にならなかったので、snapを使ってインストールすることにした。なお、hugo公式ではsnapを使ったインストールを推奨している。

解決方法

/etc/wsl.confを編集してsystemdを有効化し、WSLを再起動することで解決した。

/etc/wsl.confに追記する内容はコレ

[boot]
systemd=true

WSLの再起動の仕方

コマンドライン or PowerShellで次のコマンドを実行。

wsl.exe --shutdown

その後、'sudo snap install hugo'でhugoのインストールに成功した。

その他

systemdが有効になったので、副産物としてsshdが自動で起動するようになった。今まではWSLを起動してから手動で'sudo service sshd restart'していたので、棚ぼたである。

参考

windows subsystem for linux - Snap stopped working on wsl? - Ask Ubuntu

WSL2- Ubuntu 20.04 Snap store doesn't work due to systemd dependency · Issue #5126 · microsoft/WSL · GitHub

Systemd support is now available in WSL! - Windows Command Line

WSL1/WSL2 を再起動する方法 - 備忘録