Ubuntu – Why doesn’t apt detect the newer .deb version in the universe repository, even though it exists there

aptpackage-managementpparepositoryupdates

I'm trying to figure out why doesn't apt-get detect the newer version of chromium-browser.

This is on Ubuntu 16.04.3 LTS.

First of all, this is the output of sudo apt update:

Hit:1 http://lu.archive.ubuntu.com/ubuntu xenial InRelease
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.

This is the output of apt-cache policy chromium-browser:

chromium-browser:
  Installed: 73.0.3683.86-0ubuntu0.16.04.1
  Candidate: 73.0.3683.86-0ubuntu0.16.04.1
  Version table:
 *** 73.0.3683.86-0ubuntu0.16.04.1 100
        100 /var/lib/dpkg/status
     49.0.2623.108-0ubuntu1.1233 500
        500 http://lu.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages

It shows my installed version 73 as being the newest and it matches the candidate version, so it wouldn't update anything.

If I try to simulate the installation with apt-get install -s chromium-browser, I get:

chromium-browser is already the newest version (73.0.3683.86-0ubuntu0.16.04.1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

However, there's a newer version 78 in the universe repository, in this folder:
http://lu.archive.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/

Here's the link to the actual .deb I'm thinking of:
http://lu.archive.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/chromium-browser_78.0.3904.108-0ubuntu0.16.04.1_amd64.deb

And here's a screenshot of the said folder for future readers when the above link becomes dead:

enter image description here

Also note that if I add this ppa

sudo add-apt-repository ppa:canonical-chromium-builds/stage

…then the output of apt-cache policy chromium browser is this:

chromium-browser:
  Installed: 73.0.3683.86-0ubuntu0.16.04.1
  Candidate: 78.0.3904.108-0ubuntu0.16.04.1
  Version table:
     78.0.3904.108-0ubuntu0.16.04.1 500
        500 http://ppa.launchpad.net/canonical-chromium-builds/stage/ubuntu xenial/main amd64 Packages
 *** 73.0.3683.86-0ubuntu0.16.04.1 100
        100 /var/lib/dpkg/status
     49.0.2623.108-0ubuntu1.1233 500
        500 http://lu.archive.ubuntu.com/ubuntu xenial/universe amd64 Packages

Now it does see as the candidate the newer version 78.

However, my question is why doesn't it detect the version 78 from the universe repository, and why do I even need to add the ppa, since I demonstrated above that the .deb exists.

Note: I'm not asking for instructions how to update a package – I know how to install a .deb file. Instead, I'm trying to understand how does the apt tool work.

Best Answer

TL;DR

You have to enable xenial-updates and xenial-security in your /etc/apt/sources.list or on Updates tab of Software & Updates (software-properties-gtk).


It seems that you incorrectly understand the pool folder structure. It contains all packages for all releases.

You should go to https://packages.ubuntu.com and run search for chromium-browser package amd64 to determine correct versions for your current release.

Then you will get the following for xenial and xenial-updates:

xenial (16.04LTS) (web): Chromium web browser, open-source version of Chrome [universe]
78.0.3904.108-0ubuntu0.16.04.1 [security]: amd64
xenial-updates (web): Chromium web browser, open-source version of Chrome [universe] 78.0.3904.108-0ubuntu0.16.04.1: amd64

So you can get the latest possible package version from universe pocket:

78.0.3904.108-0ubuntu0.16.04.1: amd64

On my fully updated system the output is the following:

$ apt-cache policy chromium-browser chromium-browser: Installed: 78.0.3904.108-0ubuntu0.16.04.1 Candidate: 78.0.3904.108-0ubuntu0.16.04.1 Version table: *** 78.0.3904.108-0ubuntu0.16.04.1 500 500 http://archive.ubuntu.com/ubuntu xenial-updates/universe amd64 Packages 500 http://archive.ubuntu.com/ubuntu xenial-security/universe amd64 Packages 100 /var/lib/dpkg/status 49.0.2623.108-0ubuntu1.1233 500 500 http://archive.ubuntu.com/ubuntu xenial/universe amd64 Packages


In your particular case it seems that xenial-updates is missed in your /etc/apt/sources.list file. You need to re-enable it from terminal or by visiting Updates tab of Software & Updates (software-properties-gtk) .

Also I need to note that current Ubuntu 16.04 LTS version is 16.04.6 LTS.
So really you need to enable xenial-updates, xenial-security, then update package lists with sudo apt-get update and install all newest dependencies with sudo apt-get dist-upgrade. This will solve many security- and update- related problems.

Related Question