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

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

我试图弄清楚为什么检测不到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.

这是输出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

它显示我安装的版本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.

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

...则输出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

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

然而我的问题是为什么它检测不到78来自 Universe 存储库的版本,为什么我甚至需要添加 ppa,因为我上面已经证明 .deb 存在。

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

答案1

总结

您必须启用xenial-更新xenial-安全在您的/etc/apt/sources.list或软件和更新的更新选项卡中(software-properties-gtk)。


看来你错误地理解了水池文件夹结构。它包含所有版本的所有软件包。

你应该去https://packages.ubuntu.com并运行搜索chromium 浏览器软件包 amd64确定您当前版本的正确版本。

然后你将获得以下内容赛尼尔xenial-更新

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

因此你可以从宇宙口袋:

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-更新您的文件中缺少此更新/etc/apt/sources.list。您需要从终端或通过访问“软件和更新”的“更新”选项卡 ( ) 重新启用它software-properties-gtk

另外我需要注意的是,当前的 Ubuntu 16.04 LTS 版本是 16.04.6 LTS。
因此你确实需要启用xenial-更新xenial-安全,然后使用 更新软件包列表,sudo apt-get update并使用 安装所有最新的依赖项sudo apt-get dist-upgrade。这将解决许多与安全和更新相关的问题。

答案2

点击数:1http://lu.archive.ubuntu.com/ubuntuxenial 发布中

您仅查找“xenial”?

这是 xenial 发布时的状态,xenial-updates 包含后来发布的版本。

http://lu.archive.ubuntu.com/ubuntu/dists/xenial/显示Contents-amd64.gz 2016-04-21 08:04同时http://lu.archive.ubuntu.com/ubuntu/dists/xenial-updates/Contents-amd64.gz 2019-12-11 05:57

此文件包含信息,哪些包在哪个版本中可用,并且所有包都可以从“池”树中下载。

在“xenial”文件中你只能找到Version: 49.0.2623.108-0ubuntu1.1233

所以你必须将其添加xenial-updates到你的 sources.list 并且应该能够更新。

相关内容