从man apt.conf
,
Cache-Start、Cache-Grow、Cache-Limit
APT 从 0.7.26 版开始使用可调整大小的内存映射缓存文件来存储可用信息。Cache-Start 可提示缓存将增长到多大,因此是 APT 在启动时将请求的内存量。默认值为 20971520 字节(~20 MB)。请注意,APT 需要有此空间量;否则它可能会不正常地失败,因此对于内存受限的设备,应降低此值,而在具有大量配置源的系统上,应增加此值。Cache-Grow 以字节为单位定义缓存大小将增加多少,默认值为 1048576(~1 MB),以防 Cache-Start 定义的空间不够用。此值将反复应用,直到缓存足够大以存储所有信息或缓存大小达到 Cache-Limit。Cache-Limit 的默认值为 0,代表无限制。如果将 Cache-Grow 设置为 0,则会禁用缓存的自动增长。
如果 Cache-Limit 预设为零,则意味着 Cache-Limit 不受限制。如果 Cache-Start 和 Cache-Grow 也设置为某些默认值。那么为什么 apt-config dump 无法捕获此信息。下面的 grepping 没有给出结果。
$ apt-config dump | grep -E "Cache-Start|Cache-Grow|Cache-Limit"
答案1
这些值是某种后备值,当没有所需的配置时会设置它们。如果你查看源代码:
apt-pkg/pkgcachegen.cc
map_filesize_t const MapStart = _config->FindI("APT::Cache-Start", 24*1024*1024);
map_filesize_t const MapGrow = _config->FindI("APT::Cache-Grow", 1*1024*1024);
map_filesize_t const MapLimit = _config->FindI("APT::Cache-Limit", 0);
FindI
在配置空间中查找设置,如果不存在则设置默认值。
apt-pkg/contrib/配置.h
int FindI(std::string const &Name,int const &Default = 0)
并且apt-config dump
只转储配置空间。您的配置应该出现在输出中,但事实并非如此。很明显,它apt-config
无法查看自己的二进制文件以找出默认值。
您可能会说,转储中还有其他行,我找不到与它们相关的任何配置文件。就像这样:
Binary::apt::APT::Cache::ShowDependencyType "1";
如果我们再次查看源代码,我们会发现:
_config->CndSet("Binary::apt::APT::Cache::ShowDependencyType", true);
在这种情况下,正在配置这个。CndSet
是有条件设置的。它设置一些默认配置,而不会覆盖现有的配置。
这里有两件事需要牢记。
- 有一个函数可以查找配置,如果找不到,它会考虑其默认(后备)值。
- 还有另一个函数实际上是操纵一组配置并赋予它们一些值。