Рейтинг:6

как обновить пакеты Ubuntu в WSL вместе с автоматическим обновлением Microsoft Store

флаг cn

Я начал использовать WSL2 и установил Ubuntu без определенного номера версии. Насколько я понимаю, он автоматически обновится до следующего основного выпуска LTS (сейчас 20.04, и я предполагаю, что в следующем году будет 22.04).

Тогда как насчет пакетов внутри? Я могу удачное обновление и удачное обновление все они, но Microsoft Store также автоматически обновляет новые сборки Ubuntu, которые, как я полагаю, перезапишут некоторые из моих ручных обновлений. Должен ли я оставить их и обновить только пакеты, которые я установил сам? Что было бы наилучшей практикой?

Рейтинг:7
флаг vn

Примечание. Повторное использование некоторых моих ответов на этот вопрос. В вопросе достаточно различий, чтобы потребовать несколько изменений, но некоторые из основных концепций одинаковы.

Часть «автоматического обновления» приложения Store более чем сбивает с толку. Да, «Ubuntu» (без номера версии) в Магазине «автоматически обновляется», но это, вероятно, не означает то, что вы думаете. Мне потребовалось некоторое время, чтобы привыкнуть к этой концепции.

Это немного сложно объяснить, но когда вы устанавливаете «Ubuntu» (без версии) из Магазина, вы на самом деле получаете три различные «установки»:

  • Сам WSL, конечно, как обязательное условие. На самом деле здесь установлено ядро ​​​​Linux, поскольку оно используется всеми установленными дистрибутивами/экземплярами WSL2.

  • «Пакет приложения» с пакетом rootfs (установить.tar.gz) в C:\Program Files\WindowsApps\CanonicalGroup.... Вы можете увидеть это, запустив административную оболочку PowerShell и запустив Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\Canonical*' | Где-Объект {$_.Name -eq 'install.tar.gz' }.

  • При первом запуске (через Ubuntu.exe), установщик создает фактический экземпляр WSL в вашем %UserProfile%\AppData\Local\Packages\CanonicalGroup....

Что на самом деле делает «автоматическое обновление» приложения Store?

Когда в Магазине появляется новое обновление приложения, в вашей системе обновляется только пакет rootfs. Оно делает нет измените установленный пример. Оно делает нет автоматически обновлять любой из пакетов в вашем пример. Он даже не обновляет ядро ​​WSL2.

Вам все еще нужно бежать обновление sudo apt && обновление sudo apt -y (или аналогичный) для регулярного обновления пакетов. Обратите внимание, что это не включает ядро ​​— смотрите ниже, как это сделать.

Как я думаю, вы можете видеть из вашего вопроса, это хорошо. В противном случае вы будете конкурировать между обновленными пакетами «Магазина» и пакетами из репозитория.

(Примечание на сайте: кредит и благодарность u/zoredache на Reddit, который первоначально разъяснил это для меня.)

Так в чем смысл?

В любом случае, обновление пакета Store бесполезно для большинства пользователей, если только вы не:

  1. Отмените регистрацию экземпляра (что удалит всю конфигурацию) и заново настройте его, повторно запустив Ubuntu.exe команда. При выполнении этой начальной конфигурации rootfs распаковывается, поэтому вы получите «самую последнюю и самую лучшую» из Магазина в этот момент. Однако обратите внимание, что выпуски Store по-прежнему довольно редки по сравнению с обновлениями пакетов в официальных репозиториях. Даже сразу после установки из Магазина вы все равно почти всегда будете получать ряд обновлений через подходящий.

  2. Хотите использовать это установить.tar.gz для создания второго экземпляра WSL/Ubuntu (используя wsl --импорт). Вновь созданный экземпляр будет использовать обновленную из Store папку rootfs. Опять же, к пакетам репо применяются те же предостережения, что и в первом сценарии.

Ни один из этих сценариев не очень распространен. Даже когда неверсионный Store Убунту обновляется до (предположительно) 22.04, это не изменит ваш установлен экземпляр 20.04, только rootfs упаковка.

В этот момент вам все равно нужно запустить sudo сделать-релиз-обновление-d когда вы в конечном итоге захотите перейти на 22.04 (или промежуточный выпуск).

Обновление ядра

Обратите внимание, что ни обновление Магазина, ни подходящий (или другие методы пакета) обновить ядро ​​WSL2. Поскольку ядро ​​является частью самого WSL2 и используется всеми установленными дистрибутивами, оно обрабатывается по-разному. Использовать:

wsl --обновить

... для проверки и загрузки любых обновлений ядра WSL2.

Это предполагает, что вы используете ядро ​​по умолчанию. У вас есть возможность загрузить или собрать собственное ядро ​​с Исходный код ядра WSL2. По моему опыту, может пройти несколько дней или недель, прежде чем обновление ядра станет доступным через wsl --обновить, поэтому, если вы хотите получить самое последнее и самое лучшее, вы можете это сделать. Затем настройте WSL2 для использования этого ядра через .wslconfig.

Еще кое-что

При всем при этом приложение «Ubuntu» (неверсированное) по-прежнему имеет одно преимущество: вам не нужно беспокоиться об изменении его имени (как в том другом вопросе), когда вы в конечном итоге обновитесь до более поздней версии. Версия «Ubuntu 20.04» всегда будет иметь имя экземпляра Убунту-20.04, даже если и когда вы вручную обновили его до чего-то позже.

флаг cn
Спасибо за подробное объяснение! Меня действительно удивило, что автоматическое обновление Магазина даже не обновляет ядро... полезно знать.
NotTheDr01ds avatar
флаг vn
@leoce Верно! И ядро ​​— это совсем другая история. Обновлен ответ, чтобы покрыть это.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.