如果 Microsoft Store 无法运行,如何为 wsl2 安装 20.04?

如果 Microsoft Store 无法运行,如何为 wsl2 安装 20.04?

有没有办法安装 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.gzimages上面创建的目录中:

    # 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.tarimages\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

希望我的帖子现在收到的反对票数会减少。

相关内容