从 tar 文件安装 Arch 之类的发行版是否会比使用 Microsoft Store 中的 Ubuntu 之类的发行版更慢或导致任何问题?
答案1
让它变慢...?
一般来说,没有——没有区别。
当你从 Microsoft Store 安装像 Ubuntu 这样的发行版时,它实际上使用相同的机制。你可以启动管理 PowerShell(或 CMD)shell 并运行以下命令来查看(甚至使用)来自 Store 安装的发行版的 tarball:
Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\' | Where-Object {$_.Name -eq 'install.tar.gz' }
例如,当你从 Microsoft Store 安装 Debian 时,它会创建一个.exe
名为的应用程序执行别名(“Store/UWP/现代应用程序的假冒”)Debian.exe
。运行它有几个功能:
如果它检测到没有
debian
发行版,它将(基本上)使用 WSL 功能导入 tarball 并创建发行版。然后它会要求输入用户名/密码并 (a) 在发行版中创建它,(b) 使用 WSL 功能在发行版启动时将该用户注册为“默认”用户。如果发行版已经安装,它会启动它。
还有一些其他历史功能<distribution>.exe
,但它们大多已被wsl.exe
命令本身取代。
或造成任何问题?
--import
ing 确实有一个实质性的区别。如上所述,安装程序设置用户名。 --import
当然,ing 不会。因此,默认用户名永远不会被设置。
创建默认用户(最好为 UID 1000)后,您可以按照以下步骤将其设置为默认用户我对这个话题的回答。
但总的来说,我--import
认为优于并且比使用安装程序创建的发行版更不容易出错。原因如下:
使用
--import
,您可以控制分发的目录(甚至驱动器)。从商店安装的分发位于 下的包指定名称中%userprofile%\AppData\Local\Packages\
。至少在 Windows 10 下,卸载 Store 应用也会删除发行版本身。这也可能是影响 Store 安装应用的任何类型的 Windows 重置的问题。ed
--import
发行版不会出现这种情况。
任何其他被视为“问题”的差异通常都是发行版本身所固有的,而不是其安装方式所致。
例如,在 Arch 下,您仍然会面对基于 Systemd 的发行版。Systemd 坚持将其进程监督作为 PID1 运行,这与 WSL 的 init(也是 PID1)相冲突。
Ubuntu 也是一个主要基于 Systemd 的发行版,它至少提供了许多服务作为遗留的 SysVInit 脚本,以便您可以在 WSL 下启动它们service <service_name> start
。如果我没记错的话,Arch 没有这个后备功能。
但是从商店安装 Debian 时也不会这样,这就是为什么我说这是一个“分发限制”而不是“安装方法”的限制。
个人建议——因此,在 WSL 下,您可能需要考虑Artix Linux。这是一个基于 Arch 的发行版,可让您选择替代进程管理器(例如 Dinit 或 OpenRC)。最棒的是,绝大多数软件包都有服务脚本每一个受支持的进程管理器之一。例如,如果您安装 MariaDB,则有以下几种选择:
mariadb-openrc
mariadb-dinit
mariadb-runit
mariadb-s6
为你的特定主管安装一个将会安装适当的脚本和基础mariadb
包。
为了您的方便,我还建议您阅读一些与此问题相关的其他答案:
- 关于 Systemd 和 WSL 的一个 Ubuntu 问题
- 超级用户的回答中提供了更多信息和不同的看法。
- 我能想到的所有 WSL 差异和限制在另一个 Ask Ubuntu 答案中。