WSL2(4) Ubuntu中无法使用snap解决办法

简介: WSL2(4) Ubuntu中无法使用snap解决办法

前言

snap是一种用于安装和管理Linux应用程序的软件包管理器,它可以让用户轻松地获取最新版本的应用程序,而不用担心依赖问题或系统更新。snap在Ubuntu中是默认的软件商店,但是在Windows 11下WSL的Ubuntu中,snap无法正常工作,因为WSL没有使用systemd作为初始化系统,而snap依赖于systemd来管理服务。本文将介绍如何解决这个问题,让你可以在WSL的Ubuntu中使用snap。

解决方法

要解决这个问题,我们需要使用一个脚本,来让WSL的Ubuntu启动时使用systemd作为初始化系统。这个脚本的地址是:

https://github.com/DamionGans/ubuntu-wsl2-systemd-script

具体的操作步骤如下:

  1. 在WSL的Ubuntu中,创建一个缓存目录,并进入该目录:
mkdir caches && cd caches
  1. 克隆脚本仓库到本地:
git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git
  1. 进入脚本目录,并运行脚本:
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh
  1. 脚本运行完毕后,重启WSL。在PowerShell中输入:
wsl --shutdown

然后重新打开WSL。

  1. 在WSL中尝试使用systemctl命令,看是否正常工作:
systemctl

如果没有报错,则说明成功。

验证方法

要验证是否可以使用snap,可以在WSL中输入:

snap version

如果snapd有具体的版本号,则说明正确,如下所示:

snap    2.54.3+20.04.1ubuntu0.2
snapd   2.54.3+20.04.1ubuntu0.2
series  16
ubuntu  20.04
kernel  5.10.102.1-microsoft-standard-WSL2

另一种情况

如果你在WSL中使用systemctl命令时遇到了这样的报错:

System has not been booted with systemd as init system (PID 1). Can't operate.

这可能是因为Linux操作系统没有使用systemd,而是使用了经典的SysV init(sysvinit)系统。这种情况下,需要用SysV init的命令来代替systemd的命令。例如,要重启snapd服务,可以用这个命令:

sudo service snapd restart

而不是这个命令:

sudo systemctl restart snapd.service

你可以用这个命令来查看你的Linux操作系统使用了哪种初始化系统:

ps -p 1 -o comm=

如果输出是systemd,则说明你使用了systemd;如果输出是init,则说明你使用了SysV init。

总结

本文介绍了如何在Windows 11下WSL的Ubuntu中使用snap,通过一个脚本来让WSL使用systemd作为初始化系统,从而解决snap依赖于systemd的问题。同时,也介绍了另一种可能遇到的情况,即Linux操作系统没有使用systemd,而是使用了SysV init系统。这种情况下,需要用SysV init的命令来代替systemd的命令。

希望这篇文章对你有所帮助,如果你有任何问题或建议,请在评论区留言。

相关文章
|
8月前
|
Ubuntu
Ubuntu没有chkconfig 服务解决办法
Ubuntu没有chkconfig 服务解决办法
120 0
|
8月前
|
Ubuntu 开发工具
Ubuntu不能上网解决办法
Ubuntu不能上网解决办法
401 0
|
Ubuntu 虚拟化
vmware tools选项灰色解决办法(ubuntu 14.04)
vmware tools选项灰色解决办法(ubuntu 14.04)
781 0
vmware tools选项灰色解决办法(ubuntu 14.04)
|
2月前
|
Linux 程序员 Shell
【Linux】详解core dump文件的作用以及用法&&ubuntu20.04下无法形成core dump文件的解决办法
【Linux】详解core dump文件的作用以及用法&&ubuntu20.04下无法形成core dump文件的解决办法
|
2月前
|
人工智能 Ubuntu 机器人
【解决方案】ubuntu 解决办法 ImportError: cannot import name ‘_gi‘ from ‘gi‘
【解决方案】ubuntu 解决办法 ImportError: cannot import name ‘_gi‘ from ‘gi‘
114 0
|
2月前
|
Ubuntu 安全 虚拟化
vmware虚拟机运行ubuntu等卡慢的解决办法
vmware虚拟机运行ubuntu等卡慢的解决办法
645 0
|
2月前
|
Ubuntu 安全 Linux
WinSCP传文件到Ubuntu提示Permission denied解决办法
使用WinSCP传文件到一台Ubuntu服务器时,提示Permission denied。整理了解决办法,希望对大家日常工作有所帮助。
371 1
|
11月前
|
Ubuntu
VM虚拟机内Ubuntu不识别U盘解决办法——之一
VM虚拟机内Ubuntu不识别U盘解决办法——之一
|
11月前
|
Ubuntu Linux
ubuntu16.04开机后进入grub rescue>终端模式的解决办法
ubuntu16.04开机后进入grub rescue>终端模式的解决办法
|
Ubuntu 中间件 Linux
Filezilla 连接不上 Ubuntu 解决办法
前言由于项目原因,需要做一个 docker 镜像文件(源代码方式制作),就需要有 Linux 环境提供镜像构建,这途中就需要 windows 和 linux 来回的拷贝传输文件,于是就找了一个工具【FileZilla】来使用,奇怪的是 ftp 竟然连接失败,为了解决这个问题,顺便做个笔记。软件环境Ubuntu Server 20.04 lts Windows ...
1100 0
Filezilla 连接不上 Ubuntu 解决办法