Translation(s): English - 简体中文
这篇文章简述了如何使用APT Preferences,目前这里只有APT Pinning文档 (译者注)
Pinning
考虑开始APT Pinning之前,请留意了解是否你想要的软件包已经被backported 到当前你使用的发行版本。
注意 使用apt-pinning的时候,你必须自己为这些软件包的兼容性负责,因为Debian及其社区对你这种行为所造成的后果不承担任何责任。请记住,APT Pinning不是必须的,而且Debian及其社区也不鼓励对APT Pinning不经过充分考量的鲁莽使用的行为。
Pinning允许你安装和运行来自某个版本的的软件包 (stable, testing, unstable),而不必要升级整个系统到此版本。 然而,从较新的发行频道拉取软件包要比直接从库里面拉取容易,但是,你可能把你的系统搞的一团糟,比如,混合了来自stable的缺陷的同时,从unstable/testing来的软件包又带来了新的缺陷,而对这些缺陷的安全支持,补丁修复什么的都没有像stable频道那么有力。最终可能得到一个两头不讨好的结果。
最基础的APT Pinning涉及两个文件 /etc/apt/sources.list 和 /etc/apt/preferences.
另一个额外的角色由在 apt.conf (或者 /etc/apt/conf.d/... 文件内设置 或者在 apt 命令行指定的 target release 来扮演。
/etc/apt/sources.list
#### testing ######### deb http://ftp.us.debian.org/debian testing main contrib non-free
#### unstable ######### deb http://ftp.us.debian.org/debian unstable main contrib non-free
在这个例子里面,我们将从 testing 和 unstable 频道里面获取软件包,但是,当然也可以适当修改设置使其可以从 stable 频道获取软件包。
/etc/apt/preferences
'preferences' 文件是 pinning 行为的关键. 这里是一个例子。
Package: * Pin: release a=testing Pin-Priority: 900
Package: * Pin: release a=unstable Pin-Priority: 800
Package 默认是所有(*)软件包
Pin 定义所处的发行频道 (testing 还是unstable).
Pin-Priority 定义优先级
'apt-get' 默认按照“高版本软件包优先”的原则处理事务。上述规则重新定义了优先级,因此,在这个配置下,testing 频道的软件包获得最高优先级。
其他未尽事宜,请参阅 apt_preferences(5) 手册.
从 unstable 频道安装软件包
假设我们正处在 testing 频道 而且 我们希望尝鲜某个 unstable 频道的软件包(e.g. enlightenment)。有两种安装方法。
# apt-get install enlightenment/unstable # apt-get -t unstable install enlightenment
(译者推荐第一种方法,熟悉pacman的同学应该也会喜欢第一种)
第一种方法尝试不升级现有的系统软件包,因此,如果依赖不满足,安装会失败。
第二种方法会尝试安装或者升级任何依赖的软件包,当然,处理这一切之前,'apt-get' 都会问你。
References
man 5 apt_preferences
Apt-Howto (Section 3.10) and AptPinning.
- This link seems to have more detailed explanation:
Apt-Pinning for Beginners (wayback machine) - a good reference, and heavily borrowed from.