有没有办法升级旧的 Ubuntu 14.04.6 LTS?

有没有办法升级旧的 Ubuntu 14.04.6 LTS?

我知道这里不鼓励发表意见,但这并不是征求意见。我想解释一下情况。

我继承了 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?

答案1

由于初始化系统不同,我不建议在那个版本的 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.comold-releases.ubuntu.com。还要确保您有trusty-updates后续版本的软件包源等:通常在版本生命周期即将结束时会有一些更新,以解决升级到下一个版本时遇到的问题。所以你的/etc/apt/sources.list应该看起来像这样:

deb http://old-releases.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu trusty-security main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu trusty-updates main restricted universe multiverse

您可能有多行而不是一行。您可能会丢失一些restricted,universemultiverse: ,这也没关系(事实上,您拥有的越少,潜在问题的来源就越少,但当然,如果您安装了从中安装的任何软件包,它们就需要保留)。

然后运行此旧版本的任何挂起的更新

apt-get update
apt-get upgrade

此时,我建议在 中保留您的更改历史记录/etc。你可以很容易地做到这一点等等管理员

apt-get install etckeeper
etckeeper init
etckeeper commit 'Initial commit before upgrading from Ubuntu 14.04'

如果您启用了任何第三方存储库(例如 PPA),您应该禁用它们,并在升级过程中卸载相应的软件包。如果存在任何此类存储库,请首先注释掉/etc/apt/sources.list或中的相应行/etc/apt/sources.list.d/*。运行etckeeper commit以记录您的更改。然后查找过时的软件包(过时的软件包是您无法从当前软件包源重新安装的软件包):

apt-get install aptitude
aptitude search '~o'

如果您愿意,可以使用 aptitude 的交互模式。记下过时的软件包,然后卸载它们。

从 LTS 升级到 LTS

您现在已准备好开始升级。编辑(14.04)/etc/apt/sources.list并将其替换为(16.04)。运行以记录您的更改。然后运行trustyxenialetckeeper commit

apt-get update
apt-get dist-upgrade

下载和安装软件包时会出现很长一段时间的无聊,偶尔会出现一些问题。

如果出现问题,请及时解决。

升级完成后,重复该过程以升级到bionic(18.04)。在我写这个答案时,这个仍然在普通服务器上而不是旧版本服务器上,所以除了替换为 之外xenialbionic还替换old-releases.ubuntu.comarchive.ubuntu.com

然后再次重复升级到focal(20.04),然后升级到jammy(22.04)。

完成此操作后,如果您启用了第三方存储库,请重新启用它们或查找其现代等效项。重新安装升级前删除的第三方应用程序,如果相关,则升级您保留的第三方应用程序/usr/local等。测试一切正常。

处理过期的密钥和证书

由于密钥过期或根 CA 未知,您可能会遇到加密验证问题。

如果在升级到非古董版本之前 HTTPS 包源不起作用,请从一开始就坚持使用 HTTP 包源。

如果您从 APT 收到有关过期密钥的错误,您可以绕过他们。或者,从更新的发行版安装密钥环包可能会有所帮助,但我不知道您到底需要什么。这ubuntu 密钥环软件包中包含一个/usr/share/keyrings/ubuntu-archive-removed-keys.gpg包含旧版本密钥的文件,此外还/usr/share/keyrings/ubuntu-archive-keyring.gpg包含当前版本的密钥。

相关内容