WSL2中使用snapcraft设置experimental.snapd-snap=true报错求助
解决WSL2上Snapcraft构建时
core.experimental.snapd-snap不支持的错误 问题场景
在WSL2环境长期使用Snapcraft构建Snap包,近期执行snapcraft命令时偶发以下错误:
error: cannot perform the following tasks:
- Run configure hook of "core" snap (run hook "configure": cannot set "core.experimental.snapd-snap": unsupported system option) An error occurred when trying to execute 'sudo -H env SNAPCRAFT_BUILD_ENVIRONMENT=managed-host HOME=/root SNAPCRAFT_HAS_TTY=True snap set system experimental.snapd-snap=true' with 'multipass': returned exit code 1.
切换至LXD构建环境时会出现相同错误,仅缺少"with 'multipass'"相关提示。
解决方案
1. 关闭不支持的实验性选项
该错误核心是Snapcraft尝试启用experimental.snapd-snap功能,但WSL2环境暂不支持该选项,先手动关闭:
- 查看当前选项状态:
snap get system experimental.snapd-snap - 若返回
true,执行命令关闭:sudo snap unset system experimental.snapd-snap - 重启snap服务生效:
sudo systemctl restart snapd
2. 清理构建环境缓存
残留的构建环境可能保留了错误配置,清理后重新初始化:
- Multipass环境:
multipass delete --all && multipass purge - LXD环境:
lxc delete --force snapcraft-* - 执行Snapcraft自身清理:
snapcraft clean
3. 调整Snapcraft版本(可选)
如果是新版本Snapcraft引入的兼容性问题,可尝试:
- 回退到之前稳定版本:
sudo snap revert snapcraft - 或升级到最新预览版本(注意可能不稳定):
sudo snap refresh snapcraft --edge
4. 验证WSL2基础配置
确保WSL2环境满足Snapcraft运行要求:
- 升级WSL2内核到5.10及以上版本(可通过Windows更新或手动安装内核包)
- 若依赖systemd,需在
/etc/wsl.conf中启用:
保存后执行[boot] systemd=truewsl --shutdown重启WSL生效。
原因说明
experimental.snapd-snap是Snap的实验性功能,用于支持snapd自身以Snap包形式运行,但该功能在WSL2环境下尚未完全兼容。近期Snapcraft版本可能默认尝试启用该选项,导致构建过程中触发不支持的配置错误。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

