我们有自己的 apt/deb 存储库,其中包含一些我们想要控制版本的软件包。其中最重要的是 puppet,它对版本差异非常敏感。
我希望我们的桌面仅从我们的存储库获取 puppet,但也希望人们能够添加自己的 PPA、启用反向移植等。我们目前遇到的问题是 Ubuntu Lucid 上的反向移植。以下是一些重要的行/etc/apt/sources.list
:
deb http://gb.archive.ubuntu.com/ubuntu/ lucid main restricted universe multiverse
deb http://gb.archive.ubuntu.com/ubuntu/ lucid-updates main restricted universe multiverse
deb http://gb.archive.ubuntu.com/ubuntu/ lucid-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ lucid-security main restricted universe multiverse
deb http://deb.example.org/apt/ubuntu/lucid/ binary/
并且/etc/apt/preferences.d/puppet
:
Package: puppet puppet-common
Pin: release a=binary
Pin-Priority: 800
Package: puppet puppet-common
Pin: release a=lucid-backports
Pin-Priority: -10
目前的政策规定:
$ sudo apt-cache policy puppet
puppet:
Installed: (none)
Candidate: (none)
Package pin: 2.7.1-1ubuntu3.6~lucid1
Version table:
2.7.1-1ubuntu3.6~lucid1 -10
500 http://gb.archive.ubuntu.com/ubuntu/ lucid-backports/main Packages
100 /var/lib/dpkg/status
2.6.14-1puppetlabs1 -10
500 http://deb.example.org/apt/ubuntu/lucid/ binary/ Packages
0.25.4-2ubuntu6.8 -10
500 http://gb.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
0.25.4-2ubuntu6 -10
500 http://gb.archive.ubuntu.com/ubuntu/ lucid/main Packages
如果我使用n=
而不是a=
那么我得到Package pin: (not found)
我现在很困惑,不知道该用什么。如能提供任何帮助,我将不胜感激。
编辑
我花了更多时间阅读apt/preferences 手册页并找到了origin
关键字。所以我现在尝试了:
Explanation: get puppet from our server
Explanation: priority over 1000 means downgrade if necessary
Package: puppet puppet-common
Pin: origin "deb.example.org"
Pin-Priority: 1001
我确实删除了 backports 行。手册页说优先级超过 1000 将导致降级。但实际上没有安装任何东西。我仍然得到Package pin: (not found)
并且Candidate: (not found)
同时仍然得到上面的完整版本表。我不明白为什么我的来源不改变 deb.example.org 的优先级。
答案1
这个答案显然取决于您如何在自己的私有存储库中打包和分发诸如 puppet 之类的软件包,但可以考虑的另一种选择是制作带有前缀名称的公司特定版本,以避免与“主”存储库(如 backport)发生冲突。
因此,不要使用 puppet,而要使用 abc-puppet,其中 abc 是您公司的简写。