我使用的是带有锁定内核 4.4.0-187-generic 的 Peach OSI(xubuntu 16.04 LTS 64 位),这意味着我只能获得通过创建者标准的更新。
我在软件(gnome-software)方面遇到了一些问题,并联系了开发人员,他们告诉我我使用的是非常旧版本的 gnome-software 3.20.5,并且这些问题已在较新的版本中解决 - 这是主要问题开始于:3.20.5 似乎是我从终端运行 apt-cache policy gnome-software 时唯一可用的版本。
我知道宇宙存储库中有较新的版本,但当我获得更新时我没有收到它。
那么我如何更新到较新的版本,它可以与我的 16.04 64 位一起使用吗?
更新到较新的 Xubuntu 不是一个选择。
先感谢您
扬
答案1
Ubuntu 16.04 被称为xenial
.什么时候我们搜索 xenial 档案对于gnome-software
,我们发现版本3.20.1
。这是 xenial 发布时可用的最后一个版本。根据 Ubuntu 的政策,只有针对严重错误或安全错误的针对性修复才会在发布后被接受为补丁。这确保了那些不需要最新、最好的、更喜欢让事情像昨天一样工作的用户的稳定性。xenial
发布后不允许再有新版本。
幸运的是,有一个名为 的套件xenial-updates
。有时,软件包维护者很乐意上传新版本的软件,这些软件仍然与其依赖项兼容xenial
。这允许用户绕过稳定性承诺并获得已发布发行版的新软件。 gnome-software
这间套房可提供以下服务:3.20.5。我认为这就是您的版本的来源。
在撰写本文时,gnome-software
其他 Ubuntu 版本中还有其他几个可用的实例:
- 常规:3.36.1
- 焦点更新:3.36.1
- 焦点:3.36.0
- 永恒更新:3.30.6
- 亿:3.30.6
- 仿生更新:3.28.1
- 仿生:3.28.1
如果我们遵循 SEMVER 规则,您可能会注意到,
*-updates
永远不会增加主要或次要修订,而只会增加补丁修订。这有点危险信号。
如果您想安装最新版本之一,也可以!有三种方法可以做到这一点:
- 从 gnome 的源代码构建:我不推荐这样做。有很多 debian/ubuntu 补丁,它可能会导致某些部分无法相互兼容。此外,已安装的文件将不再由包管理器管理。
/etc/apt/sources.list
在您的其他花色之一中添加一行。然后添加APT::Default-Release xenial;
并/etc/apt/conf.d/
安装以下行。是非常小心有关在确认安装之前阅读新软件包的信息,以确保您不会意外地将整个系统升级到较新的版本。如果我错过了一个步骤,那么它就是固定,您可以将所有内容固定到 xenial,然后固定gnome-software
到较新的套件。
apt update
apt install -t bionic gnome-software
- 手动下载
gnome-software_*.deb
并使用dpkg -i
来安装它。这可以防止需要进行任何适当的配置或固定,因此可能会更容易。它还可以防止您意外升级整个系统。从以下位置获取软件包.ubuntu.com。如果存在依赖性问题,则此属性的另一个属性是,您需要手动解决它们。我认为这是一件好事,因为您将痛苦地意识到需要升级的所有内容,并可以决定是否中止。
您将遇到的问题之一是依赖项的兼容性。您可以做的最小更新是运行 3.28.1 的 bionic。我们来看看我们可能会遇到的问题。如果我们比较 的gnome-software_3.20.5
依赖关系,gnome-software_3.28.1
我们会看到:
| gnome-software deps | 3.20.5 | 3.28.1 |
|--------------------------------|----------------------------|----------------------|
| appstream | any | any |
| apt-config-icons | any | any |
| dconf-gsettings-backend | any | any |
| gnome-software-common | = 3.20.5-0ubuntu0.16.04.13 | = 3.28.1-0ubuntu4 |
| gsettings-desktop-schemas | >= 3.18 | >= 3.18 |
| libappstream-glib8 | >= 0.5.13 | >= 0.7.0~git20170615 |
| libapt-pkg5.0 | >= 1.2 | |
| libatk1.0-0 | >= 1.12.4 | >= 1.12.4 |
| libc6 | >= 2.17 | >= 2.17 |
| libcairo2 | >= 1.2.4 | >= 1.2.4 |
| libfwupd2 | >= 0.6.3 | >= 1.0.3 |
| libgcc1 | >= 1:3.0 | |
| libgdk-pixbuf2.0-0 | >= 2.22.0 | >= 2.22.0 |
| libglib2.0-0 | >= 2.46.0 | >= 2.49.3 |
| libgnome-desktop-3-12 | >= 3.17.92 | |
| libgnome-desktop-3-17 | | >= 3.18 |
| libgspell-1-1 | | >= 1.3.2 |
| libgtk-3-0 | >= 3.18.2 | >= 3.22.4 |
| libgtkspell3-3-0 | any | |
| libgudev-1.0-0 | | >= 146 |
| libjson-glib-1.0-0 | >= 1.1.2 | >= 0.13.2 |
| liboauth0 | >= 0.9.1 | >= 0.9.1 |
| libpackagekit-glib2-18 | | >= 1.1.0 |
| libpolkit-gobject-1-0 | >= 0.99 | >= 0.99 |
| libsecret-1-0 | >= 0.7 | >= 0.7 |
| libsnapd-glib1 | >= 0.9 | |
| libsoup2.4-1 | >= 2.52 | >= 2.52 |
| libsqlite3-0 | >= 3.5.9 | |
| libstdc++6 | >= 5.2 | |
| packagekit | | >= 1.1.4 |
| software-properties-gtk | | any |
现在我们开始看到我们将遇到的一些麻烦。让我将此列表过滤到xenial
or中尚未满足的依赖项xenial-updates
:
| package | 3.28.1 Requirement | Available in xenial |
|--------------------------------|----------------------------|----------------------|
| gnome-software-common | = 3.28.1-0ubuntu4 | 3.20.5 |
| libappstream-glib8 | >= 0.7.0~git20170615 | 0.5.13 |
| libfwupd2 | >= 1.0.3 | No |
| libglib2.0-0 | >= 2.49.3 | 2.48.2 |
| libgnome-desktop-3-17 | >= 3.18 | No |
| libgtk-3-0 | >= 3.22.4 | 3.18.9 |
| libpackagekit-glib2-18 | >= 1.1.0 | No |
| packagekit | >= 1.1.4 | No |
| software-properties-gtk | any | No |
我查看了、、和的debian/control
文件,没有看到这些文件或任何 xenial 软件包,因此可以从存档中安装这些软件包。但是,您需要以与上面相同的方式查看这些包的依赖关系,以确保安全。libfwupd2
libgnome-desktop
libpackagekit-glib2-18
packagekit
Breaks:
Replaces:
bionic
当我查看时,gnome-software-common
我找不到无法更新软件包的原因。它来自相同的源包,gnome-software
所以我认为它们应该配对并且可以更新。首先看一下apt rdepends gnome-software-common
以确保它不会破坏其他任何东西。我认为该包对于所有体系结构都是通用的,这是它从为每个体系结构编译的包-common
中分离出来的唯一原因。gnome-software
我真的不确定libappstream-glib8
,libglib2.0-0
或libgtk-3.0
.我认为它们可以更新,因为主要版本不会增加。通常,如果libgtk
3.1 与 3.0 不兼容,软件包名称将从 更改为 ,libgtk-3-0
以便libgtk-3-1
它们可以并行安装并共存。由于这还没有完成,我怀疑它们可以共存。
正如您所看到的,依赖关系是最困难的部分。我不确定上面的方法 2 是否会自动为您执行此操作,但如果您使用方法 3,那么这就是您执行此操作的方式。一旦您对它可以安装感到满意,您还需要更新依赖项、它们的依赖项、它们的依赖项等等。它可以一直深入到内核。因此,您可以决定此更新要进行到什么程度。