Есть ли способ установить 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 для работы.
решение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.
Запустите WSL Ubuntu как root:
wsl -u root
Чтобы задать пользователя по умолчанию, который будет запускаться при запуске экземпляра, создайте файл
/etc/wsl.conf
со следующим содержимым:[user] default=username
...конечно же, заменив свое имя пользователя.
Выйти обратно в PowerShell
Завершите работу экземпляра, чтобы дать ему возможность снова включиться и прочитать
wsl.conf
:wsl --terminate Ubuntu20.04
Вот и все. Запуск wsl
должен запустить Ubuntu 20.04 под вашим идентификатором пользователя.
У меня не было возможности протестировать каждый шаг здесь от начала до конца, но это комбинация того, что я делал в прошлом, и других ответов, которые я предоставил. Я считаю, что собрал все части, которые вам нужны, но если у вас возникнут проблемы, дайте мне знать, и я рассмотрю и подправлю это.
решение2
Чтобы решить проблему, которая, казалось, требовала переустановки Windows, я воспользовался так называемой возможностью "обновления на месте" установщика Windows, которая переустанавливает систему, сохраняя все ваши файлы и приложения! Это может вам помочь. Смотритеэтот урокнапример, для получения подробной информации.
Сегодня мне даже удалось найти это окончательное объяснение вашего главного вопроса, если только его не скопировал другой парень здесь, так как этот пост более старый: https://superuser.com/questions/1271682/есть-способ-установки-подсистемы-окна-Ubuntu-для-Linux-на-Win10-v170 И последнее: даже MS документирует все это: https://docs.microsoft.com/en-us/windows/wsl/install-manual
Надеюсь, теперь количество отрицательных отзывов у моего поста уменьшится.