从 20.04 升级到 20.10 部分成功

从 20.04 升级到 20.10 部分成功

介绍:

早在三月份,我购买了一台预装了 Ubuntu 20.04 的新戴尔 XPS 13。由于 20.10 版本已经发布,我立即尝试升级它。这次升级部分成功,但并非完全成功。我意识到它并不完全成功的原因是,每当我检查更新时,它都会告诉我我仍在运行 20.04 并且可以升级到 20.10(这不起作用)。这对我来说成为问题的方式是,我永远不会被提供升级到 21.04(或任何更高版本)的选项。

我的系统的当前状态:

我的系统上有很多矛盾的信息:

  • /etc/lsb-release 显示我正在运行 20.10。
  • hostnamectl 程序说我正在运行 20.04.1 LTS。
  • /etc/os-release 显示我正在运行 20.04.1 LTS。
  • /etc/issue 显示我正在运行 20.10。
  • lsb_release 程序说我正在运行 20.04.1 LTS。
  • 无论生成 MOTD 是什么,都表明我正在运行 20.10。
  • /etc/apt/sources.list 所有非注释行均引用 groovy(20.10 的代码名称)。

我最初的升级尝试失败的原因是:

我最初升级尝试时的 main.log 以此行结尾:

2021-03-05 21:29:16,691 ERROR got error from PostInstallScript ./xorg_fix_proprietary.py (g-exec-error-quark: Failed to execute child process “./xorg_fix_proprietary.py” (No such file or directory) (8))

之前的一切看起来都成功了。我不确定为什么它找不到该文件,因为该文件存在于 /usr/lib/python3/dist-packages/DistUpgrade/ 中。

我后续升级尝试失败的原因是:

后续尝试的日志文件中没有错误。相反,我们只得到以下信息:

2021-05-27 20:32:20,571 DEBUG abort called

这出现在日志文件中我本来可以得到的位置:

2021-03-05 21:16:54,953 DEBUG quirks: running StartUpgrade

运行 /usr/bin/do-release-upgrade 时实际打印到屏幕上的内容是:

Calculating the changes

Calculating the changes

Restoring original system state

Aborting

虽然日志文件中没有任何内容表明这一点,但我相信它中止的原因是它感觉到系统已经升级。

迄今为止的调试步骤:

我一直在 /usr/lib/python3/dist-packages/DistUpgrade/ 中挖掘文件,试图找到输出/日志未提供的信息。很明显,由于 DistUpgradeController.calcDistUpgrade() 返回 False,因此该过程被中止。我尝试向该函数添加额外的日志来确定触发哪个返回语句,但升级过程似乎没有看到/使用我的修订版本的文件,即使在我编译它并确认 ./ 之后也是如此。pycache有一个更新的文件。所以这似乎是一条死路,除非/直到我能弄清楚如何让它使用我修改过的 python 文件。

另一种方法可能是确定在我最初的升级尝试中运行 xorg_fix_proprietary.py 失败后应该做什么,以便我可以手动执行这些步骤。这使我找到了 fullUpgrade() 中调用 postUpgrade() 的地方。看起来该过程中可能未运行的唯一部分是:

if os.path.exists("/var/lib/ubuntu-release-upgrader/release-upgrade-available"):
    os.unlink("/var/lib/ubuntu-release-upgrader/release-upgrade-available")

但事实上,该文件在我的系统中并不存在!

可能的后续步骤

我可以想象按照以下方式之一进行:

  • 弄清楚如何使用我自己修改过的 DistUpgrade*.py 文件版本,并修改它们以跳过导致升级失败的检查。
  • 找到某种方法降级回 20.04 系统,以便我可以再次尝试全新升级。
  • 手动进行必要的更改,以便我的系统识别它实际上正在运行 20.10。

我将非常感激任何关于哪种方法最不危险以及如何进行的建议。

答案1

当您预装 Ubuntu 时,它与您自行安装的版本略有不同。您的版本是专门为您的机器量身定制的。

这就是升级失败的原因。程序需要某个版本的 Ubuntu,但无法获得。

您可以直接安装它,但我不建议这样做。

答案2

软件包 dell-linux-assistant 不适用于 groovy,这可能是升级失败的原因。

您可以在软件更新程序设置中禁用 somerville-dla-team ppa,然后再次运行 groovy 升级。

相关内容