问题如下:有许多节点使用 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”条目。