我开始使用WSL2并从Microsoft安装Ubuntu (没有特定版本号的Ubuntu)。我的理解是,它将自动升级到下一个主要的LTS发行版--现在是20.04,我想明年是22.04。
那里面的包裹呢?我可以同时使用apt update
和apt upgrade
,但Microsoft也可以使用更新的Ubuntu版本进行自动更新,我相信这将覆盖我的一些手动更新。我应该把它们留在这里,只升级我自己安装的软件包吗?最好的做法是什么?
发布于 2021-12-29 04:18:55
注意:重用我对这个问题的一些答案。问题中有很多不同之处,需要做一些修改,但一些核心概念是相同的。
商店应用程序的“自动升级”部分有点令人困惑。是的,商店中的"Ubuntu“(没有版本号)”自动更新“,但这可能并不意味着你认为它意味着什么。我自己花了一点时间才适应这个概念。
这有点难以解释,但是当您从Store安装"Ubuntu“(没有版本)时,您实际上得到了三个不同的”安装“:
C:\Program Files\WindowsApps\CanonicalGroup...
中包含rootfs包(install.tar.gz
)的“应用程序包”。您可以通过启动管理PowerShell并运行Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\Canonical*' | Where-Object {$_.Name -eq 'install.tar.gz' }
来看到这一点。ubuntu.exe
)运行时,安装程序在%UserProfile%\AppData\Local\Packages\CanonicalGroup...
中创建实际的WSL实例。当商店中的应用程序有了新的更新时,系统上唯一更新的就是rootfs包。它不会更改已安装的实例。它不会自动更新实例中的任何包。它甚至不更新WSL2内核。
您仍然需要运行sudo apt update && sudo apt upgrade -y
(或等效的)来定期更新包。注意,这不包括内核--关于如何做到这一点,请参见下面的内容。
我认为你可以从你的问题中看出,这是一件好事。否则,您将竞争“商店”升级包和那些从回购。
(网站注:感谢Reddit who 最初为我澄清了这一点上的u/zoredache。)
无论如何,对大多数用户来说,升级Store包是非常无用的,除非您:
ubuntu.exe
命令重新配置它。在进行初始配置时,rootfs是解压缩的,因此您将从Store获得“最新和最好的”。但是,请注意,与官方repos中的包更新相比,Store发行版的频率仍然很低。即使在从商店安装之后,您仍然几乎总是通过apt
获得许多更新。install.tar.gz
创建第二个WSL/Ubuntu实例(使用wsl --import
)。然后,新创建的实例将使用Store更新的rootfs。同样,关于回购包的警告与第一种情况相同。这两种情况都不常见。即使不版本化的Store Ubuntu
被更新为(大概) 22.04,它也不会更改已安装的20.04实例,只更改rootfs包。
到那时,当您最终想升级到22.04 (或临时版本)时,仍然需要运行sudo do-release-upgrade -d
。
注意,Store和apt
(或其他包方法)都不更新WSL2内核。由于内核是WSL2本身的一部分,并且在所有已安装的发行版之间共享,所以处理方式不同。使用:
wsl --update
..。检查和下载任何WSL2内核更新。
这确实假定您使用的是默认内核。您可以选择从WSL2 2核源下载或构建自己的内核。根据我的经验,内核更新可能需要几天或几周的时间才能通过wsl --update
获得,所以如果您想获得最新的和最棒的内核更新,就可以。然后将WSL2配置为通过.wslconfig
使用该内核。
随着最近从Store安装WSL本身的更改,wsl --update
也将更新WSL (包括内核),但仍然不会影响您已经安装的发行版(当然,比如Ubuntu)。
尽管如此,"Ubuntu“(非版本化的)应用仍然有一个优势,那就是当您最终升级到以后的版本时,您不需要担心更改它的名称(就像在另一个问题中那样)。“Ubuntu20.04”版本将始终具有实例名Ubuntu-20.04
,即使在以后手动将其升级到某些内容时也是如此。
https://askubuntu.com/questions/1384209
复制相似问题