apt-config dump 没有返回缓存信息?

apt-config dump 没有返回缓存信息?

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是有条件设置的。它设置一些默认配置,而不会覆盖现有的配置。


这里有两件事需要牢记。

  1. 有一个函数可以查找配置,如果找不到,它会考虑其默认(后备)值。
  2. 还有另一个函数实际上是操纵一组配置并赋予它们一些值。

相关内容