如何在 apt-cacher-ng 存在的情况下设置 APT 首选项?

如何在 apt-cacher-ng 存在的情况下设置 APT 首选项?

问题如下:有许多节点使用 apt-cacher-ng。所有 apt 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

对于微软存储库,

Pin: release o=NVIDIA

对于 NVIDIA 存储库。

要确定使用哪个值,请检索相关Release文件 (例如 https://packages.microsoft.com/ubuntu/22.04/prod/dists/jammy/Release)并在文件顶部查找“Origin”条目。

相关内容