我在准确理解 Ubuntu 中整个更新过程的工作原理以及安装软件的良好做法方面遇到了一些困难。
我知道我有一个 /etc/apt/sources.list
文件,其中列出了我所有的存储库,并且当我使用时会查询这些存储库apt-get update
- 以便稍后与例如一起使用
apt-get upgrade
。这非常有意义,我最近spotify
通过添加
deb http://repository.spotify.com stable non-free
到此“源”列表中进行了安装。
但后来我就困惑了……
当我去下载 Google Chrome 时,我只需下载并获取一个.deb
文件,Chrome 就可以毫无问题地安装……但我没有看到任何新条目/etc/apt/sources.list
...
那么如何apt-get update
知道在哪里查询有关 Chrome 更新的信息?它是否以某种方式被添加到源文件中已列出的存储库之一?
我希望我安装的所有软件都包含在更新功能中。
答案1
这确实有点复杂。首先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
软件包包含一个脚本,它会将 Google 的存储库添加到您的系统中(具体来说,它会在 处创建一个文件/etc/apt/sources.list.d/
),从而确保chrome
将要使用时进行更新apt-get
。
答案2
apt 在 列出的源中搜索/etc/apt/sources.list
,并在 中的所有文件中搜索/etc/apt/source.list.d
。您将得到一个文件,例如 ,google-chrome.list
其中/etc/apt/sources.list.d
将包含以下行:
deb http://dl.google.com/linux/chrome/deb/ stable main
这被用作更新 google-chrome 的源。
当您手动下载 google-chrome 的 deb 文件并安装时,deb 文件中的脚本会创建此文件,这样您就不必手动搜索更新。