更新如何与从 .deb 文件安装的程序一起工作

Kir*_*ies 13 updates package-management repository deb

我在完全理解整个更新如何在 Ubuntu 中工作以及安装软件的良好做法时遇到了一些困难。

我知道我有一个 /etc/apt/sources.list文件,其中列出了我的所有存储库,并且在我使用时会查询这些存储库apt-get update- 稍后将与例如
apt-get upgrade. 这是完全合理的,我最近spotify通过添加
deb http://repository.spotify.com stable non-free到这个“来源”列表来安装。

但是后来我就糊涂了……

当我去下载谷歌浏览器时,我只需要下载并抓取一个.deb文件,Chrome 安装没有问题......但我没有看到任何新条目/etc/apt/sources.list......

那么如何apt-get update知道在哪里查询有关 Chrome 更新的信息呢?它是否以某种方式添加到源文件中已经列出的存储库之一?

我希望所有已安装的软件都包含在更新功能中。

ter*_*don 10

这确实有点复杂。首先,apt是一个前端dkpg这实际上手柄安装/删除软件包。因此,/etc/apt/sources.list(以及 中的任何文件/etc/apt/sources.list.d/)由 读取apt,而不是由 读取dpkg

现在,当您.deb手动下载文件时,您将绕过apt并使用dpkg -i packagename.deb它来安装它。这意味着 apt 的数据库将不会更新,并且apt系统将不知道您安装的软件包。换句话说,apt-get upgrade永远不会更新任何手动安装的软件包。

话虽如此,chrome实际上是规则的例外。当您转到其下载页面时,您将看到以下消息:

 在此处输入图片说明

底部是这个注释:

注意:安装 Google Chrome 会添加 Google 存储库,因此您的系统会自动使 Google Chrome 保持最新。如果您不想要 Google 的存储库,请在安装软件包之前执行“sudo touch /etc/default/google-chrome”。

这意味着该.deb软件包包括一个脚本,将谷歌的存储库添加到您的系统(具体而言,它将建立在文件/etc/apt/sources.list.d/),从而确保chrome 当您使用更新apt-get

  • @Morten 不,这正是 `apt` 等存在的原因,如果你走出那个系统,你就靠自己了。有一些技巧,但对于您可能手动安装的少数软件包来说,很少值得付出努力。 (2认同)
  • 包管理器实际上并不关心包是由 dpkg 还是 apt 安装的。如果它在存储库中找到较新版本的软件包,则会安装较新版本。 (2认同)