我知道apt update
更新支持发行版上的现有包索引,但不会升级基于这些包索引安装的已安装包(实用程序)(作为apt upgrade
升级包)。
update
update
用于从源重新同步包索引文件。可用包的索引是从 中指定的位置获取的/etc/apt/sources.list
。例如,当使用 Debian 存档时,此命令会检索并扫描文件Packages.gz
,以便获得有关新软件包和更新软件包的信息。更新应始终在upgrade
或之前执行dist-upgrade
。请注意,由于无法提前知道包文件的大小,因此整体进度表将不正确。
我还知道 Ansible 有模块apt
其中包括该指令:
- name: update the apt package index i.e. apt-get update
apt: update_cache=yes
在操作之前运行相当于 apt-get update 的操作。可以作为软件包安装的一部分运行,也可以作为单独的步骤运行。
我假设他们说“等效”,因为 Ansible 将“旧”代码转换为社区派生的 up2date 等效代码(如果原始代码本身发生更改)。
但我仍然想念缓存与这里有什么关系?对我来说,计算中缓存的概念是在更近的地方复制一些很远的东西,以便在我们需要使用它时保存导航,从而节省资源,但我仍然怀念它apt update
与apt update
.
答案1
apt
维护本地包列表;这就是它“知道”哪些包可用、它们的依赖关系等的方式。apt update
通过从存储库检索这些包来更新这些包列表;它不会升级任何软件包。
这就是缓存:它是系统上配置的存储库中可用的包信息的本地缓存。apt
基于此缓存做出所有决策,因此它必须保持最新。过时的缓存可能会导致apt
错过更新或无法完全安装软件包(因为存储库中不再提供所需的版本)。
update_cache=yes
告诉 Ansible 的apt
模块在应用任何必要的更改(如果有)之前刷新缓存。