Установить 20.04 для wsl2, если Microsoft Store не работает?

Есть ли способ установить 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, то в конечном итоге они сводятся к тому, что "XML-файл, необходимый Microsoft Store, был каким-то образом удален, и нет способа получить его обратно без переустановки Store путем переустановки Windows" :-(

В любом случае, я не жду, что кто-то здесь поможет с диагностикой Microsoft Store, я просто надеюсь, что есть какой-то альтернативный способ установить Ubuntu 20. 04 для WSL2, который не требует Windows Store для работы.

0
задан 26 June 2021 в 02:09

1 ответ

Если у вас уже установлен WSL (который в любом случае не зависит от Store, так что это не должно быть проблемой), вы можете использовать wsl --import подкоманду, чтобы получить "боковую загрузку" дистрибутива Ubuntu.

Пакет, который вы уже скачали, содержит нужный вам файл, но для упрощения инструкции я попрошу вас скачать его еще раз. Вы, конечно, можете изменить этот рецепт по своему усмотрению:

  • Сначала выберите место для ваших файлов WSL. Например:

    cd $env:USERPROFILE
    mkdir -p wsl\instances\Ubuntu20_04
    mkdir wsl\images
    cd wsl
    
  • Загрузите пакет Appx вручную в каталог wsl, либо по соответствующей прямой ссылке, найденной здесь, либо, в вашем случае, через:

    # Предполагая, что мы все еще находимся в каталоге `wsl`, созданном выше
    Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile Ubuntu.appx -UseBasicParsing 
    
  • Полученный файл на самом деле просто переименованный файл .zip. Распакуйте его в PowerShell и переместите install.tar.gz в каталог images, созданный выше:

    # Все еще в каталоге `wsl`.
    Расширить-архивировать 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 # Необязательно, и, возможно, не нужно, если это первый установленный дистрибутив
    wsl -u root useradd --create-home --user-group --groups adm,dialout,cdrom,floppy,sudo,audio,dip,video,plugdev,netdev --password "encryptedPassword" имя пользователя
    

    ... Конечно, настройте имя пользователя на ваше имя пользователя. О том, как создать зашифрованный пароль, смотрите здесь.

    Насколько мне известно, это создаст пользователя так же, как пользователь по умолчанию создается при установке Microsoft Store в Ubuntu 20.04.

  • Запустите WSL Ubuntu от имени root:

    wsl -u root
    
  • Чтобы задать пользователя по умолчанию, который запускается при старте экземпляра, создайте файл /etc/wsl.conf со следующим содержимым:

    [user]
    по умолчанию=имя пользователя
    

    ... подставляя ваше имя пользователя, конечно.

  • Выходим обратно в PowerShell

  • Выключаем экземпляр, чтобы он смог вернуться и прочитать wsl.conf:

    wsl --terminate Ubuntu20.04
    

Это должно быть все. Запуск wsl должен запустить Ubuntu 20.04 под вашим ID пользователя.

У меня не было возможности проверить каждый шаг здесь из конца в конец, но это комбинация того, что я делал в прошлом, и других ответов, которые я получил. Я считаю, что собрал вместе все необходимые вам части, но если у вас возникнут проблемы, дайте мне знать, и я пересмотрю и подкорректирую это.

0
ответ дан 28 July 2021 в 11:24

Другие вопросы по тегам:

Похожие вопросы: