今天我使用 将 LTS 从 trusty 升级到 xenial do-release-upgrade
。升级过程没有出现错误。但升级后,我不确定我的系统现在处于哪个版本。
该do-release-upgrade
工具表示它将升级到 xenial,而我的sources.list
现在指向 xenial 软件包档案。apt
声称所有软件包都已完全升级(正在执行update
、upgrade
和dist-upgrade
)。但是当我运行的时候,lsb_release -a
我仍然得到这个
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 14.04.5 LTS
Release: 14.04
Codename: trusty
当我检查版本base-files
(据我所知,其中包含/etc/lsb-release
文件)时,dpkg --list
我得到的10.1
是版本中最新的软件包版本仿生的包档案。
另外,当我运行时,do-release-upgrade -c
它仍尝试升级到 xenial。
我必须说我非常困惑。有人知道发生了什么事吗?
更新
我想我知道这里发生了什么。在更新时,安装过程会base-files
要求用户确认是否更新/etc/lsb-release
自上次安装以来编辑过的文件。
Configuration file '/etc/lsb-release'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
该文件看起来与base-file
更新前的 trusty 包中的内容相同,所以我不太明白为什么在替换它之前会询问我。无论如何,我想我可能采取了默认操作,导致实际安装的版本与文件内容不匹配。
使用 xenial 软件包中的文件替换该文件后,我便能够使用 成功更新到 bionic do-release-upgrade
。这次我选择在lsb-release
升级时更新。再次升级之前手动修改该文件的内容似乎没有任何不利影响。
答案1
lsb_release
是一个 Python 脚本,它只是从文件中读取数据/etc/lsb-release
并将输出转储到屏幕上。您可以使用以下方式编辑该文件:
sudo -H gedit /etc/lsb-release
然后更改内容以适合您的平台。我的包含:
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.5 LTS"