為什麼需要 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.

相關內容