
在 systemd (CentOS8) 中,我注意到即使在我這樣做之後,dnf
日誌中也會彈出 ( ) 。我發現一個計時器正在為 ()運行。/var/log/messages
dnf remove dnf-automatic
systemctl list-unit-files --type=timer
dnf-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 的補充,如果不使用自動則不需要?
它是兩者的補充dnf
,dnf-automatic
因為兩者都有更高的機會在新的元數據緩存就位的情況下運行,從而運行得更快。
使用 systemctl disable dnf-makecache.timer 和 systemctl stop dnf-makecache.timer 停用此計時器的負面/缺點?
較慢的dnf
命令/互動式等待安裝和更新。除非你跟進文章並調整:
metadata_timer_sync=3600
計時器的作用非常低,不會產生太大的好處。
PS,您會問很多問題,但在這個社區中,您通常應該問一個:)
請諮詢man dnf
和man 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.