![如果 Microsoft Store 无法运行,如何为 wsl2 安装 20.04?](https://linux22.com/image/1070919/%E5%A6%82%E6%9E%9C%20Microsoft%20Store%20%E6%97%A0%E6%B3%95%E8%BF%90%E8%A1%8C%EF%BC%8C%E5%A6%82%E4%BD%95%E4%B8%BA%20wsl2%20%E5%AE%89%E8%A3%85%2020.04%EF%BC%9F.png)
有没有办法安装 20.04 以便与 wsl2 一起使用没有依赖于 Microsoft Store(或 Add-AppxPackage)的工作?
原因:我的电脑上的 Microsoft Store 和 Add-AppxPackage 已损坏,尝试修复它们均未成功,而 Microsoft 的唯一解决方案是“重新安装 Windows”,因为无法重新生成它,也无法自行卸载并重新安装 Store。其他人已经发现 Add-AppxPackage 并不是绕过损坏的 Microsoft Store 的漏洞。
顺便说一句,我已经尝试通过运行以下命令下载它:
Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile Ubuntu.appx -UseBasicParsing
Add-AppxPackage .\Ubuntu.appx
不幸的是,我收到了以下错误消息:
Add-AppxPackage : Deployment failed with HRESULT: 0x80073CF3, Package failed updates, dependency or conflict
validation.
Deployment Add operation with target volume C: on Package
CanonicalGroupLimited.Ubuntu20.04onWindows_2004.2020.424.0_x64__79rhkp1fndgsc from: (Ubuntu.appx) failed with error
0x80073CF3. See http://go.microsoft.com/fwlink/?LinkId=235160 for help diagnosing app deployment issues.
NOTE: For additional information, look for [ActivityId] 014ee586-6a11-0004-ce43-5001116ad701 in the Event Log or use
the command line Get-AppPackageLog -ActivityID 014ee586-6a11-0004-ce43-5001116ad701
At line:1 char:1
+ Add-AppxPackage .\Ubuntu.appx
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (D:\Downloads\Ubuntu.appx:String) [Add-AppxPackage], IOException
+ FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.AddAppxPackageCommand
如果您仔细查看 EventViewer 中的错误消息,它们最终归结为“Microsoft Store 所需的 XML 文件以某种方式被删除,并且除非重新安装 Windows 来重新安装 Store,否则无法将其恢复” :-(
无论如何,我不指望这里有人能帮我诊断微软商店,我只是希望有其他方法可以为 WSL2 安装 Ubuntu 20.04,而不会需要Windows 应用商店正常运行。
答案1
只要您已经安装了 WSL(它不依赖于商店,所以这应该不是问题),您就可以使用wsl --import
子命令来“侧载” Ubuntu 发行版。
您已下载的软件包包含您需要的文件,但为了简化说明,我将让您再次下载。当然,如果您愿意,您可以调整此配方:
首先,选择 WSL 文件的位置。例如:
cd $env:USERPROFILE mkdir -p wsl\instances\Ubuntu20_04 mkdir wsl\images cd wsl
将 Appx 包手动下载到该
wsl
目录中,或者通过找到正确的直接链接这里或者,对于你的情况,可以通过:# Assuming we are still in the `wsl` directory created above Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile Ubuntu.appx -UseBasicParsing
生成的文件实际上只是一个重命名的
.zip
文件。在 PowerShell 中将其提取并移动install.tar.gz
到images
上面创建的目录中:# Still in the `wsl` directory Expand-Archive Ubuntu.appx mv Ubuntu\install.tar.gz images\ Remove-Item -Recurse Ubuntu
您需要将
install.tar.gz
文件解压到install.tar
。PowerShell 和 Windows 都没有内置功能来执行此操作,因此我将把这留给您自己选择。我猜您已经安装了类似 7-zip 的程序。将 重命名
images\install.tar
为images\Ubuntu20_04.tar
。这不是绝对必要的,但我喜欢保留“原始”图像,以防您想要安装其他实例。WSL 非常适合启动“一次性”实例,您可以在其中尝试一些具有潜在破坏性的东西,而不必担心破坏主实例。目录内仍如此
wsl
:wsl --import Ubuntu20.04 instances\Ubuntu20_04 images\Ubuntu20_04.tar --version 2 wsl --set-default Ubuntu20.04 # Optional, and perhaps unnecessary if this is the first distribution installed wsl -u root useradd --create-home --user-group --groups adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev --password "encryptedPassword" username
...当然,调整
username
为你的用户名。参见这里有关如何创建加密密码。据我所知,这将以与 Ubuntu 20.04 的 Microsoft Store 安装创建默认用户相同的方式创建用户。
以 root 身份启动 WSL Ubuntu:
wsl -u root
要设置实例启动时运行的默认用户,请创建
/etc/wsl.conf
包含以下内容的用户:[user] default=username
...当然是替换您的用户名。
退出并返回 PowerShell
关闭实例以允许它重新启动并读取
wsl.conf
:wsl --terminate Ubuntu20.04
就是这样。运行wsl
应该会以您的用户 ID 启动 Ubuntu 20.04。
我还没有机会对这里的每一步进行端到端的测试,但这是我过去做过的事情和我提供的其他答案的组合。我相信我已经把你需要的所有内容都整理好了,但如果你遇到问题,请告诉我,我会检查并调整它。
答案2
为了解决似乎需要重新安装 Windows 的问题,我利用了 Windows 安装程序所谓的“就地升级”功能,重新安装时保留了所有文件和应用程序!这可能会对你有所帮助。请参阅本教程例如,详细信息。
今天我甚至设法找到了对你的主要问题的最终解释,如果没有被这里的其他人复制的话,因为这个是较旧的帖子: https://superuser.com/questions/1271682/is-there-a-way-of-installing-ubuntu-windows-subsystem-for-linux-on-win10-v170 最后,甚至 MS 也记录了这一切: https://docs.microsoft.com/en-us/windows/wsl/install-manual
希望我的帖子现在收到的反对票数会减少。