首选的软件源库

如果我的sources.list或sources.list.d中列出了两个存储库,有没有办法告诉apt哪一个是首选?
我的确切用例是如果在内部网络存储库和远程存储库上都找到了一个软件包,我希望apt始终使用内部网络存储库。现在它似乎在两者之间随机选择。
3个回答

假设您的软件包仓库位于 `repo.company.net`,创建一个名为 `/etc/apt/preferences.d/company-pinning` 的文件,并包含以下内容即可完成操作:
Package: *
Pin: origin repo.company.net
Pin-Priority: 600

默认优先级为500,因此它将优先选择来自内部服务器的最新版本。


1我阅读了关于apt_preferences的manpage。它有这样一行:“APT偏好文件不会影响实例的选择,只会影响版本的选择”。看起来APT偏好不能解决我特定的用例。 - deft_code
我认为apt-pinning是Debian独有的,因为Ubuntu不区分稳定版、测试版、不稳定版等等...也许多媒体方面会有所不同...但通常版本应该永远不会... - wishi

首先,在sources.list中列出内部网络源应该足够了。根据手册的说明:

按照偏好的顺序列出源是很重要的,最优先的源应该排在第一位。通常情况下,这将导致按照速度从快到慢进行排序(例如,CD-ROM 先于本地网络上的主机,再于远程互联网主机)。

从对源代码的初步查看来看,首先遍历sources.list,然后按照无法控制的顺序遍历sources.list.d中的文件。


真让人沮丧。我本想在分发包中将内部仓库信息放入 sources.list.d 中,但看起来我得在 post-install 中编辑 sources.list,真恶心。 - deft_code