dnf-makecache.timer が必要な理由は何ですか?

dnf-makecache.timer が必要な理由は何ですか?

systemd (CentOS8) では、を実行した後でもdnfログに ( ) が表示されることに気付きました。 タイマーが ( ) の間実行されていることを発見しました。/var/log/messagesdnf remove dnf-automaticsystemctl list-unit-files --type=timerdnf-makecache.timer

オンラインで見つけた最良の情報は、dnf-makecache が「リポジトリ キャッシュを更新する」というものです。わかりましたが、これは実際にはどういう意味ですか? リポジトリ キャッシュを 1 時間ごとに更新する必要があるのはなぜですか? 手動で更新を使用した場合、いずれにしてもこれは発生しませんかdnf update?

更新されていないdnf update場合は、最新バージョンを取得できないか、失敗しますか?それとも、これは補完的なもので、自動を使用しない場合は必要ないものですか? 私の意見では、そうであれば、削除されたときに削除されているはずです。dnf-makecachednf-automaticdnf-automatic

systemctl disable dnf-makecache.timerおよびを使用してこのタイマーを無効にすることのマイナス面 / デメリットは何ですかsystemctl stop dnf-makecache.timer?

答え1

わかりました。でも、それは実際どういう意味ですか?

これは、後続のコマンドを高速化するために、パッケージのリモート インデックスがローカル ファイル キャッシュにダウンロードされることを意味しますdnf

リポジトリのキャッシュを 1 時間ごとに更新する必要があるのはなぜですか?

これは、コマンドの利便性と高速化のために行われますdnf。eg コマンドを実行するたびにdnf install、リポジトリの「最新の」メタデータが必要になります。これがないと、コマンドを対話的に実行するときに、メタデータの更新を待たなければならない可能性が高くなりますdnf

タイマーが1時間ごとに設定されているにもかかわらず、実際の実行時間は3時間ごとにしか行われないことに注意してください。これはむしろバグであり、詳細は次のとおりです。ここ

dnf update を使用して手動で更新すると、いずれにせよこれが発生しませんか?

はい、デフォルトではいずれにせよそうなるでしょうメタデータが古いとみなされる場合つまり、デフォルトの有効期間である 6 時間を超えています (リポジトリごとの定義でこの TTL を上書きできます)。リポジトリの定義に が含まれている場合、この現象は発生しませんmetadata_expire=-1

dnf-makecache が更新されていない場合、dnf update は失敗したり、最新バージョンを取得できなかったりしますか?

いいえ、失敗することはありません。ただし、メタデータがすでに存在し、ネットワーク接続が不安定な場合は、信頼性が少し高くなると言えます。

それとも、これは dnf-automatic を補完するものであり、automatic を使用していない場合は必要ないものでしょうか?

これは両方を補完するものdnfで、dnf-automatic両方とも新しいメタデータ キャッシュが配置された状態で実行される可能性が高くなり、したがって実行速度が速くなります。

systemctl enable dnf-makecache.timer および systemctl stop dnf-makecache.timer を使用してこのタイマーを無効にすることのマイナス面 / 短所は何ですか?

インストールと更新を待つコマンド/対話型処理が遅くなりますdnf。記事に従って調整しない限り、次のようになります。

metadata_timer_sync=3600

タイマーはまったく効果がなく、あまり役に立ちません。

PS: あなたはたくさんの質問をしますが、このコミュニティでは通常 1 つの質問をするべきです :)

ご相談ください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.

関連情報