apt-cacher-ngがある場合にAPTのデフォルト設定を指定する方法は?

apt-cacher-ngがある場合にAPTのデフォルト設定を指定する方法は?

問題は次のとおりです。 apt-cacher-ngを使用するノードがたくさんあります。すべての適切なURLの形式は次のとおりです。

deb http://192.168.1.2:3142/archive.ubuntu.com/ubuntu/ jammy-updates main restricted
deb [arch=amd64] http://192.168.1.2:3142/HTTPS///packages.microsoft.com/ubuntu/22.04/prod jammy main
deb http://192.168.1.2:3142/HTTPS///developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/ /

APTのデフォルト設定を次のように設定しても効果はありません。たとえば、ディレクトリ内のファイルの次の内容/etc/apt/preferences.d

Package: dotnet* aspnet* netstandard*
Pin: origin *microsoft.com
Pin-Priority: 500

Package: dotnet* aspnet* netstandard*
Pin: origin *ubuntu.com
Pin-Priority: 1

apt-cacher-ngを使用するときにAPT設定をどのように設定する必要がありますか?Pin: originうまくいかないので、これを達成するには別のトリックが必要です。合理的な検索では見つかりません。

たとえば、UbuntuとMicrosoftのdotnetパッケージとNVidiaとUbuntuのnvidia CUDAパッケージは、最上位レベルで同様の名前を持ちますが、依存関係名が異なるため、混合時にSDKを使用できないため、デフォルト設定が必要です。キャッシュを使用する理由は明らかです。これは、更新を受信するためのネットワークトラフィックがN倍少ないためです。

答え1

サーバーアドレスで固定するのではなく、各ストレージに含まれている情報を利用して固定することができます。特に、各リポジトリのファイルで「Origin」フィールドを使用できますRelease

Pin: release o=Ubuntu

Ubuntuリポジトリの場合、

Pin: release o=microsoft-ubuntu-jammy-prod

Microsoft リポジトリの場合

Pin: release o=NVIDIA

NVIDIAリポジトリの場合。

使用する値を決定するには、関連Releaseファイル(例えば https://packages.microsoft.com/ubuntu/22.04/prod/dists/jammy/Release)ファイルの上部にある「Origin」エントリを見つけます。

関連情報