为什么需要 dnf-makecache.timer?

为什么需要 dnf-makecache.timer?

在 systemd (CentOS8) 中,我注意到即使在我这样做之后,dnf日志中也会弹出 ( ) 。我发现一个计时器正在为 ()运行。/var/log/messagesdnf remove dnf-automaticsystemctl list-unit-files --type=timerdnf-makecache.timer

我在网上能找到的最好的就是 dnf-makecache“更新 Repo 缓存”。好吧,但这实际上意味着什么?为什么存储库缓存需要每小时更新一次?如果手动使用更新,这种情况不会发生吗dnf update

如果不刷新会dnf update失败或无法获取最新版本吗?dnf-makecache或者这是一种补充dnf-automatic,如果不使用自动则不需要? IMO:如果是这种情况,那么在dnf-automatic删除时就应该将其删除。

systemctl disable dnf-makecache.timer使用和禁用此计时器的负面/缺点systemctl stop dnf-makecache.timer

答案1

好吧,但这实际上意味着什么?

这意味着包的远程索引被下载到本地文件缓存,以加快后续dnf命令的速度。

为什么存储库缓存需要每小时更新一次?

这样做是为了方便和加速dnf命令。任何时候你运行egdnf install命令,它都需要有一个“新鲜”的存储库元数据。如果没有它,当您以交互方式运行命令时,很有可能必须等待元数据刷新dnf

请注意,尽管计时器设置为每 1 小时一次,但有效运行时间不超过每 3 小时一次。这是一个bug,详细的这里

如果使用 dnf 更新手动更新,不会发生这种情况吗?

是的,默认情况下无论如何都会发生如果元数据被认为是过时的。也就是说,超过了 6 小时的默认生命周期(每个存储库定义可以覆盖此 TTL)。如果回购协议的定义具有 ,则永远不会发生这种情况metadata_expire=-1

如果 dnf-makecache 没有刷新,dnf 更新会失败或无法获取最新版本吗?

不,它不会失败。尽管您可以说,如果元数据已经存在并且网络连接不稳定,那么它可能会稍微更可靠。

或者这是对 dnf-automatic 的补充,如果不使用自动则不需要?

它是对两者的补充dnfdnf-automatic因为两者都有更高的机会在新的元数据缓存就位的情况下运行,从而运行得更快。

使用 systemctl disable dnf-makecache.timer 和 systemctl stop dnf-makecache.timer 禁用此计时器的负面/缺点?

较慢的dnf命令/交互式等待安装和更新。除非你跟进文章并调整:

metadata_timer_sync=3600

计时器的作用非常低,不会产生太大的好处。

PS,您会问很多问题,但在这个社区中,您通常应该问一个:)

请咨询man dnfman dnf.conf。那些正确记录的人不应该白费力气。

答案2

因为我的 centos 8.1 服务器位于防火墙和有限代理后面,所以 dnf-makecache-timer 会反复生成烦人的错误。它似乎使用随机动态服务器列表,我不能全部添加受信任的代理白名单。这也将是反对我们的安全准则。

使用 yum 可以定义将在(可能)所有包管理器操作中使用和尊重的服务器列表:mirrorlist=… 和 include_only=… 。

我找不到任何有效的解决方案或设置来限制 dnf-makecache 计时器使用的服务器。

奇怪的是,当我尝试时,命令行调用从未失败。

据我了解隐含的(以我目前的理解)合理的问题:

“我不需要它,我不想要它,(在我们的例子中)它会抛出我无法控制的错误:我怎样才能禁用它?

我在这里回答一下:

添加到[main]- 部分/etc/dnf/dnf.conf

metadata_timer_sync=0

如 dnf.conf - 手册页中所述:

 Use 0 to completely disable automatic metadata synchronizing.

相关内容