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

在这个例子里面,我们将从 testingunstable 频道里面获取软件包,但是,当然也可以适当修改设置使其可以从 stable 频道获取软件包。

/etc/apt/preferences

'preferences' 文件是 pinning 行为的关键. 这里是一个例子。

 Package: *
 Pin: release n=testing
 Pin-Priority: 900

 Package: *
 Pin: release n=unstable
 Pin-Priority: 800

Package 默认是所有(*)软件包

Pin 定义所处的发行频道 (testing 还是unstable).

Pin-Priority 定义优先级

其他未尽事宜,请参阅 apt_preferences(5) 手册.

从 unstable 频道安装软件包

假设我们正处在 testing 频道 而且 我们希望尝鲜某个 unstable 频道的软件包(e.g. enlightenment)。有两种安装方法。

 # apt-get install enlightenment/unstable
 # apt-get -t unstable install enlightenment

(译者推荐第一种方法,熟悉pacman的同学应该也会喜欢第一种)

第一种方法尝试不升级现有的系统软件包,因此,如果依赖不满足,安装会失败。

第二种方法会尝试安装或者升级任何依赖的软件包,当然,处理这一切之前,'apt-get' 都会问你。

References