我有几个关于 Linux 包管理器的问题:
- “包管理器缓存”到底是什么?
- 我应该保留它还是完全清理它是否安全?
- 如果完全清除缓存会出现什么问题?
- 如果我清除缓存,我的软件包会自动更新吗?
- 该缓存中存储什么类型的数据?
语境:
- Arch Linux 中的“pacman”
- Debian 中的“apt”
答案1
这个答案将重点关注apt
,但这些原则通常适用于包管理器。
包管理器跟踪不同的信息;尤其
- 系统上安装的软件包的详细信息
- 存储库中可用软件包的详细信息
- 可能是包的档案
除此之外,他们还可能维护该信息的不同形式,或对该信息进行的计算结果(例如依赖树),并使用它们来加速操作。
在apt
的例子中,apt
缓存(由 操纵apt-cache
)是后者:可用于 的包信息的优化表示apt
。它存在于/var/cache/apt/pkgcache.bin
并且可以通过以下方式查看其统计数据
apt-cache stats
删除它会导致它在下次需要时重新创建,除了造成延迟之外不会产生任何不利影响。
除此之外,还在 ;apt
中维护一个包缓存/var/cache/apt/archives
;这就是apt-get clean
和清理的内容apt-get autoclean
。从此缓存中删除的任何文件也将在下次需要时检索(如果可能),除了获取它们所需的延迟、需要在线检索它们以及文件可能会被删除之外,不会产生任何不利影响。不再可用。
存储库中可用软件包的详细信息未列为缓存,但从技术上讲它们是,因为如果删除它们也可以下载;这就是它的apt-get update
作用。默认情况下apt
,此信息存储在下的文件中/var/lib/apt
- 请注意使用/var/lib
而不是/var/cache
。请注意,这些文件将不是如果它们被删除,则会自动检索。
系统唯一重要且不易重新创建的数据是系统中安装的软件包的信息。在apt
基于 的系统中,它由 管理dpkg
并存在于 中/var/lib/dpkg
。
在apt
基于 的系统上,软件包更新依赖于 检索到的信息apt-get update
;如果定期运行,任何丢失的缓存都将被填充,并且依赖于缓存数据的任何其他操作都将继续(包括包升级,无论以何种方式应用)。