-2

I'm on Peach OSI (xubuntu 16.04 LTS 64bit) with a locked kernel 4.4.0-187-generic, meaning I only get updates that passes the creators criteria.

I have had some problems with Software(gnome-software) and contacted the developers, who told me I'm using a very old version of the gnome-software, 3.20.5 and that these problems were solved in the newer versions - this is where the main problem start: 3.20.5 seem to be the only version available when I run apt-cache policy gnome-software from terminal.

I know there is a newer version in the universe repository but I don't get it offered when I get updates.

So how can I update to the newer version and will it work with my 16.04 64bit?

Updating to newer Xubuntu is not an option.

Thank you in advance

Jan

1 Answers1

0

Ubuntu 16.04 is called xenial. When we search the xenial archive for gnome-software, we find version 3.20.1. That was the last version that was available when xenial was released. Per Ubuntu's policy, only targeted fixes for critical bugs or security bugs are accepted as patches after release. This ensures stability for users who don't need the latest-and-greatest and prefer to just have things work the same as they did yesterday. No new versions are allowed in xenial after release.

Fortunately, there is a suite called xenial-updates. Sometimes package maintainers are happy to upload new versions of software which are still compatible with its dependencies in xenial. This allows users to bypass the stability promise and get new software for a released distribution. gnome-software is available in this suite as 3.20.5. I think this is where your version comes from.

At the time of writing there are several other instances of gnome-software available in other Ubuntu releases:

  • groovy: 3.36.1
  • focal-updates: 3.36.1
  • focal: 3.36.0
  • eon-updates: 3.30.6
  • eon: 3.30.6
  • bionic-updates: 3.28.1
  • bionic: 3.28.1

If we follow SEMVER rules you may notice that *-updates never increments the major or minor revisions, just the patch revisions. That's a little bit of a red-flag.


If you want to install one of the more recent versions, you can! There are three ways to do this:

  1. Build from gnome's sources: I don't recommend this. There are lots of debian/ubuntu patches and it could cause some parts to not work with each other. Also, the installed files will no longer be managed by the package manager.
  2. Add a line in your /etc/apt/sources.list for one of the other suits. Then add APT::Default-Release xenial; to /etc/apt/conf.d/ and install with the lines below. Be very careful about reading the new packages before you confirm the installation to be sure you don't accidentally upgrade your entire system to a newer release. If I missed a step, then it's pinning where you'd pin everything to xenial, then pin gnome-software to a newer suite.
apt update 
apt install -t bionic gnome-software
  1. Download gnome-software_*.deb manually and use dpkg -i to install it. This prevents the needs to do any apt configuration or pinning and so it may be easier. It will also prevent you from accidentally upgrading your whole system. Get it from packages.ubuntu.com. The other property of this if there are dependency problems, you'll need to resolve them manually. I think that's a good thing because you'll be painfully aware of everything that needs to be upgraded and can make a decision about whether to abort.

One of the problems you'll run into is compatibility of dependencies. The smallest update you can do is to bionic which runs 3.28.1. Let's look at the problems we may encounter. If we compare the dependencies of gnome-software_3.20.5 against gnome-software_3.28.1 we see:

| 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                  |

Now we start to see some of the trouble we are going to run into. Let me filter down this list to dependencies which are not already met in 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                   |

I took a look at the debian/control files for libfwupd2, libgnome-desktop, libpackagekit-glib2-18 and packagekit and these don't seen to Breaks: or Replaces: any of the xenial packages so it could be ok to install those packages from the bionic archive. However, you'd need to look at the dependencies of those packages in the same way that I did above to ensure things are safe.

When looking at gnome-software-common I couldn't see a reason why you couldn't update the package. It's from the same source package as gnome-software and so I think they are meant to be paired and it can be updated. Take a look at apt rdepends gnome-software-common first to ensure that it doesn't break anything else. I think the -common package is common to all architectures and that's the only reason why it's split from gnome-software which is compiled for each architecture.

I'm really not sure about libappstream-glib8, libglib2.0-0 or libgtk-3.0. I think they can be updated because the major version doesn't increment. Usually if libgtk 3.1 is incompatible with 3.0, the package name would change from libgtk-3-0 to libgtk-3-1 so they could be installed in parallel and co-exist. Since that hasn't been done, I suspect they can co-exist.


As you can see, the dependencies are the toughest part to this. I'm not sure if method 2 above will do this for you automatically, but if you use method 3 then this is how you'd do it. Once you're happy that it can be installed, you'll need to also update the dependencies, and their dependencies, and their dependencies, etc. It could go all the way down to the kernel. Therefore it's up to you to decide how far you want to go with this update.

Stewart
  • 13,677
  • Thank you Stewart, that explained a whole lot more than what the Gnome software developers "We no longer support 16.04". They never solved the problems with Gnome software center which were shipped with 16.04 and now washes their hands, and just moved on to the next LTS. I will not pursue this any futher as it might break my setup, and just not use Gnome software center - as it has too many bugs, just try typing Firefox in the search field, it becomes FFiirreeffooxx - this is solved in later versions(which is not available for 16.04). – Jan Johansson Sep 14 '20 at 03:17