leo*_*oce 20 upgrade package-management apt windows-subsystem-for-linux
我开始使用 WSL2 并从 Microsoft Store(没有特定版本号的商店)安装 Ubuntu。我的理解是,它会自动升级到下一个主要的 LTS 版本——现在是 20.04,我认为明年会是 22.04。
那么里面的包裹呢?我可以apt update
和apt upgrade
所有这些,但 Microsoft Store 也会自动更新较新的 Ubuntu 版本,我相信这会覆盖我的一些手动更新。我应该保留它们并只升级我自己安装的软件包吗?最好的做法是什么?
Not*_*1ds 29
注意:重复使用我对此问题的一些答案。问题的差异很大,需要进行一些更改,但一些核心概念是相同的。
商店应用程序的“自动升级”部分有点令人困惑。是的,商店中的“Ubuntu”(没有版本号)会“自动更新”,但这可能并不意味着您认为的意思。我自己花了一些时间才适应这个概念。
这有点难以解释,但是当您从商店安装“Ubuntu”(无版本)时,您实际上最终会得到三个不同的“安装”:
当然,WSL 本身是一个先决条件。这实际上是 Linux 内核的安装位置,因为它在所有已安装的 WSL2 发行版/实例之间共享。
install.tar.gz
带有 rootfs 包 ( )的“应用程序包” C:\Program Files\WindowsApps\CanonicalGroup...
。您可以通过启动管理 PowerShell 并运行来查看这一点Get-ChildItem -Recurse 'C:\Program Files\WindowsApps\Canonical*' | Where-Object {$_.Name -eq 'install.tar.gz' }
。
首次运行时(通过ubuntu.exe
),安装程序会在您的%UserProfile%\AppData\Local\Packages\CanonicalGroup...
.
当应用商店中有新的应用程序更新时,系统上唯一更新的是 rootfs 软件包。它不会更改您已安装的实例。它不会自动更新您的实例中的任何包。它甚至不更新 WSL2 内核。
您仍然需要运行sudo apt update && sudo apt upgrade -y
(或等效)来定期更新软件包。请注意,这不包括内核——请参阅下文了解如何执行此操作。
我想你从你的问题中可以看出,这是一件好事。否则,您将在“商店”升级包和存储库中的升级包之间进行竞争。
(站点注释:感谢 Reddit 上的 u/zoredache,他最初为我澄清了这一点。)
无论如何,商店包的升级对于大多数用户来说是毫无用处的,除非你:
取消注册实例(这会删除所有配置)并通过重新运行命令来重新配置它ubuntu.exe
。在进行初始配置时,rootfs 会被解压,因此此时您可以从商店获得“最新和最好的”。但请注意,与官方存储库中的软件包更新相比,商店发布的频率仍然相当低。即使从应用商店安装后立即,您仍然几乎总是会通过apt
.
想要使用它install.tar.gz
来创建第二个 WSL/Ubuntu 实例(使用wsl --import
)。然后,新创建的实例将使用存储更新的 rootfs。同样,与第一个场景中相同的警告适用于存储库包。
这两种情况都不常见。即使未版本化的 StoreUbuntu
更新到(大概)22.04,它也不会更改您安装的20.04 实例,只会更改 rootfs package。
此时,sudo do-release-upgrade -d
当您最终想要升级到 22.04(或临时版本)时,您仍然需要运行 a。
请注意,Store 更新和apt
(或其他包方法)都不会更新 WSL2 内核。由于内核是 WSL2 本身的一部分,并且在所有已安装的发行版之间共享,因此其处理方式有所不同。使用:
wsl --update
Run Code Online (Sandbox Code Playgroud)
...检查并下载任何 WSL2 内核更新。
这确实假设您使用的是默认内核。您可以选择从WSL2 内核源下载或构建您自己的内核。根据我的经验,内核更新可能需要几天或几周的时间才能通过 获得wsl --update
,所以如果您想获取最新和最好的,您可以。然后通过 .config 配置 WSL2 以使用该内核.wslconfig
。
随着最近的变化,WSL本身现在是从 Store 安装的,wsl --update
也会更新 WSL(包括内核),但仍然对您已安装的发行版(例如 Ubuntu)没有影响。
尽管如此,“Ubuntu”(无版本)应用程序仍然有一个优点,那就是当您最终升级到更高版本时,您无需担心更改其名称(就像在另一个问题中一样)。“Ubuntu 20.04”版本将始终具有实例名称Ubuntu-20.04
,即使您稍后手动将其升级到某个版本。
归档时间: |
|
查看次数: |
22628 次 |
最近记录: |