为什么 apt 在 Universe 存储库中检测不到较新的 .deb 版本,即使它存在于那里?

sta*_*bra 5 updates package-management apt ppa repository

我想弄清楚为什么没有apt-get检测到较新版本的chromium-browser.

这是在 Ubuntu 16.04.3 LTS 上。

首先,这是输出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.
Run Code Online (Sandbox Code Playgroud)

这是输出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
Run Code Online (Sandbox Code Playgroud)

它显示我安装的版本73是最新的并且它匹配候选版本,所以它不会更新任何东西。

如果我尝试使用 模拟安装apt-get install -s chromium-browser,我会得到:

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.
Run Code Online (Sandbox Code Playgroud)

但是,78在此文件夹中的 Universe 存储库中有一个更新版本:http :
//lu.archive.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/

这是我正在考虑的实际 .deb 的链接:http : //lu.archive.ubuntu.com/ubuntu/pool/universe/c/chromium-browser/chromium-browser_78.0.3904.108-0ubuntu0.16.04。 1_amd64.deb

当上述链接失效时,这是该文件夹的屏幕截图,供未来读者使用:

在此处输入图片说明

另请注意,如果我添加此ppa...

sudo add-apt-repository ppa:canonical-chromium-builds/stage
Run Code Online (Sandbox Code Playgroud)

...然后输出apt-cache policy chromium browser是这样的:

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
Run Code Online (Sandbox Code Playgroud)

现在它确实将较新版本视为候选78

但是,我的问题是为什么它没有检测到78来自 Universe 存储库的版本,为什么我什至需要添加 ppa,因为我在上面证明了 .deb 存在。

注意:我不是在询问如何更新软件包的说明 - 我知道如何安装 .deb 文件。相反,我试图了解 apt 工具是如何工作的。

N0r*_*ert 9

TL; 博士

您必须在您的或在软件和更新 ( ) 的更新选项卡上启用xenial-updatesxenial-security/etc/apt/sources.listsoftware-properties-gtk


您似乎错误地理解了文件夹结构。它包含所有版本的所有包。

您应该访问https://packages.ubuntu.com并运行搜索chromium-browser package amd64以确定当前版本的正确版本。

然后你会得到以下xenialxenial-updates

xenial (16.04LTS) (web):Chromium 网络浏览器,Chrome 的开源版本 [ Universe ]
78.0.3904.108-0ubuntu0.16.04.1 [安全]:amd64
xenial-updates (web):Chromium 网络浏览器,开源Chrome [宇宙] 78.0.3904.108-0ubuntu0.16.04.1 版本:amd64

所以你可以从Universe Pocket获取最新的可能的包版本:

78.0.3904.108-0ubuntu0.16.04.1:amd64

在我完全更新的系统上,输出如下:

$ 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


在您的特定情况下,您的文件中似乎缺少 xenial-updates/etc/apt/sources.list。您需要从终端或访问软件和更新 ( software-properties-gtk) 的更新选项卡重新启用它。

另外我需要注意的是,当前的 Ubuntu 16.04 LTS 版本是 16.04.6 LTS。
因此,您确实需要启用xenial-updatesxenial-security,然后sudo apt-get update使用sudo apt-get dist-upgrade. 这将解决许多与安全和更新相关的问题。