我知道这里不鼓励发表意见,但这并不是征求意见。我想解释一下情况。
我继承了 Ubuntu 14.04.6 LTS 的 VPS,目前我面临着悲喜剧的场景。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.6 LTS
Release: 14.04
Codename: trusty
$ uname -r
5.19.2-x86_64-linode156
过去,我通过修改存储库并谨慎地手动升级各个软件包,成功地将 Ubuntu 转换为 Debian。
我想就此征求您的意见:
- 哪个版本的 Debian 更相似?是否真的可以将 Ubuntu 14 切换到旧的 Debian?我问这个问题是因为我记性不好,我还没有准备好告诉大家我100%确定过去已经做过转换;这只是我记得的事情
- 有没有办法在 2023 年将服务器升级到 ubuntu 的下一个 LTS,而无需大跳到最新的 LTS?
由于初始化系统不同,我不建议在那个版本的 Ubuntu 和 Debian 之间进行转换。Ubuntu 14.04 使用了 Debian 从未接受过的 Upstart。
您可以升级到较新的 Ubuntu。您需要一次执行一个 LTS 版本,即 14.04 → 16.04 → 18.04 → 20.04 → 22.04。这需要时间,但风险很低,尤其是在服务器上。最大的麻烦来源通常是第三方应用程序,有时是 Universe 中包之间的交互。典型的 VPS 比典型的台式机更不容易遇到问题。
在开始之前,请查看 VPS 正在运行的内容,并制定计划来处理对旧软件的依赖关系。例如,如果您有一些古老的 PHP 代码,请首先测试它是否适用于现代版本的 PHP。
准备升级
所有 Ubuntu 版本都存档在旧版本服务器上。因此,您需要做的第一件事就是编辑
/etc/apt/sources.list
以替换archive.ubuntu.com
为old-releases.ubuntu.com
。还要确保您有trusty-updates
后续版本的软件包源等:通常在版本生命周期即将结束时会有一些更新,以解决升级到下一个版本时遇到的问题。所以你的/etc/apt/sources.list
应该看起来像这样:您可能有多行而不是一行。您可能会丢失一些
restricted
,universe
和multiverse
: ,这也没关系(事实上,您拥有的越少,潜在问题的来源就越少,但当然,如果您安装了从中安装的任何软件包,它们就需要保留)。然后运行此旧版本的任何挂起的更新
此时,我建议在 中保留您的更改历史记录
/etc
。您可以使用etckeeper轻松完成此操作。如果您启用了任何第三方存储库(例如 PPA),您应该禁用它们,并在升级过程中卸载相应的软件包。如果存在任何此类存储库,请首先注释掉
/etc/apt/sources.list
或中的相应行/etc/apt/sources.list.d/*
。运行etckeeper commit
以记录您的更改。然后查找过时的软件包(过时的软件包是您无法从当前软件包源重新安装的软件包):如果您愿意,可以使用 aptitude 的交互模式。记下过时的软件包,然后卸载它们。
从 LTS 升级到 LTS
您现在已准备好开始升级。编辑(14.04) 并将
/etc/apt/sources.list
其替换为(16.04)。运行以记录您的更改。然后运行trusty
xenial
etckeeper commit
下载和安装软件包时会出现很长一段时间的无聊,偶尔会出现一些问题。
如果出现问题,请及时解决。
升级完成后,重复该过程以升级到
bionic
(18.04)。在我写这个答案时,这个仍然在普通服务器上而不是旧版本服务器上,所以除了替换为 之外,xenial
还bionic
替换old-releases.ubuntu.com
为archive.ubuntu.com
。然后再次重复升级到
focal
(20.04),然后升级到jammy
(22.04)。完成此操作后,如果您启用了第三方存储库,请重新启用它们或查找其现代等效项。重新安装升级前删除的第三方应用程序,如果相关,则升级您保留的第三方应用程序
/usr/local
等。测试一切正常。处理过期的密钥和证书
由于密钥过期或根 CA 未知,您可能会遇到加密验证问题。
如果在升级到非古董版本之前 HTTPS 包源不起作用,请从一开始就坚持使用 HTTP 包源。
如果您从 APT 收到有关过期密钥的错误,您可以绕过它们。或者,从更新的发行版安装密钥环包可能会有所帮助,但我不知道您到底需要什么。ubuntu -keyring
/usr/share/keyrings/ubuntu-archive-removed-keys.gpg
包包含一个包含旧版本密钥的文件,此外还/usr/share/keyrings/ubuntu-archive-keyring.gpg
包含当前版本的密钥。