2.7.6. 使用带有 unstable 软件包的 testing 版本

如下是一个关于 apt-pinning 技术的例子,当使用 testing的时候,实现 unstable 中的特定的较新的上游版本软件包的日常升级。你应该按如下所示的在 “/etc/apt/sources.list“ 文件中列出所有需要的档案库。

  1. deb http://deb.debian.org/debian/ testing main contrib non-free
  2. deb http://deb.debian.org/debian/ unstable main contrib non-free
  3. deb http://security.debian.org/ testing/updates main contrib

按如下所示的设置 “/etc/apt/preferences“ 文件。

  1. Package: *
  2. Pin: release a=unstable
  3. Pin-Priority: 100

当想要在此配置下从 unstable 档案库中安装 “<package-name>“ 软件及它的依赖包时,你执行带有 “-t“ 选项 (unstable 的 Pin-Priority 值变为 990) 的转换目标发行版的命令。

  1. $ sudo apt-get install -t unstable <package-name>

在此配置下,执行 “apt-get update“ 和 “apt-get dist-upgrade“(或者 “aptitude safe-upgrade“ 和 “aptitude full-upgrade“) 命令,会从 testing 档案库升级那些从 testing 档案库安装的软件包并且从 unstable 档案库升级那些从 unstable 档案库中安装的软件包。

[小心]小心

小心不要去移除 “/etc/apt/sources.list“ 文件中的 “testing“ 档案库。如果文件中没有 “testing“ ,APT 系统会使用更加新的 unstable 档案库升级软件包。

[提示]提示

我通常会在上述操作后,马上注释掉 “/etc/apt/sources.list“ 文件中的 “unstable“ 档案库记录。这避免了因为处理 “/etc/apt/sources.list“ 文件中的众多记录而造成的升级缓慢虽然同时也阻止了那些从 unstable 档案库中安装的软件包通过 unstable 升级。

[提示]提示

如果 “/etc/apt/preferences“ 文件中 “Pin-Priority: 1“ 替代了 “Pin-Priority:100“,即使 “/etc/apt/sources.list“ 文件中的 “testing“ 记录被删除了,Pin-Priority 值为 100 的已安装软件包也不会通过 unstable 档案库升级。

如果你希望自动跟踪 unstable 里某些特殊的软件包,而在安装时不再使用初始化选项 “-t unstable“ , 你必须创建 “/etc/apt/preferences“ 文件,并在该文件顶部按下面的方式清晰的列出所有那些软件包。

  1. Package: <package-1>
  2. Pin: release a=unstable
  3. Pin-Priority: 700
  4. Package: <package-2>
  5. Pin: release a=unstable
  6. Pin-Priority: 700

如下是为每个特定的软件包设置 Pin-Priority 值。例如,为了使用最新的 unstable 的英文版 “Debian Reference”,你应该在 “/etc/apt/preferences“ 文件中写入以下条目。

  1. Package: debian-reference-en
  2. Pin: release a=unstable
  3. Pin-Priority: 700
  4. Package: debian-reference-common
  5. Pin: release a=unstable
  6. Pin-Priority: 700
[提示]提示

即使你使用的是 stable 档案库,apt-pinning 技术仍然是有效的。根据我以前的经验,从 unstable 档案库安装的文档包一直是安全的。