我如何才能运行 Debian 稳定版但安装一些测试版软件包?

我如何才能运行 Debian 稳定版但安装一些测试版软件包?

假设您正在运行一个服务器,并且您不想从稳定版(Lenny)升级到测试版(Squeeze),而只想安装一个或两个所需的软件包。

仅安装测试版中的某些包的最佳方法是什么?

答案1

许多人似乎害怕将稳定与测试混合在一起,但坦率地说,测试本身是相当稳定的,并且通过适当的偏好和解决方案检查,您可以避免将核心包置于不稳定路径上的“稳定性漂移”。

“测试还算稳定?”,你会问。是的。为了将软件包从不稳定版本迁移到测试版本,它必须连续 10 天没有未解决的错误。很有可能,特别是对于更受欢迎的软件包,如果出现问题,有人会提交不稳定版本的错误报告。

即使您不想混合环境,如果您遇到需要比稳定版本更新的版本的情况,那么仍然最好有这个选项。

以下是我建议的设置方法:

首先,在中创建以下文件/etc/apt/preferences.d

stable.pref

# 500 <= P < 990: causes a version to be installed unless there is a
# version available belonging to the target release or the installed
# version is more recent

Package: *
Pin: release a=stable
Pin-Priority: 900

testing.pref

# 100 <= P < 500: causes a version to be installed unless there is a
# version available belonging to some other distribution or the installed
# version is more recent

Package: *
Pin: release a=testing
Pin-Priority: 400

unstable.pref

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=unstable
Pin-Priority: 50

experimental.pref

# 0 < P < 100: causes a version to be installed only if there is no
# installed version of the package

Package: *
Pin: release a=experimental
Pin-Priority: 1

(不要害怕这里的不稳定/实验性的东西。优先级足够低,它永远不会自动安装任何这些东西。即使是测试分支也会表现良好,因为它只会安装您想要测试的软件包。)

现在,创建一个匹配集/etc/apt/sources.list.d

stable.list:从原始文件复制/etc/apt/sources.list。将旧文件重命名为类似 的名称sources.list.orig

testing.list:与 相同stable.list,但有不同testing

unstable.list:与 相同stable.list,但带有unstable,并删除安全列表。

experimental.list:与 相同unstable.list,但有不同experimental

您还可以oldstablesources.lists.dand中添加一个preferences.d(使用优先级 1),尽管这个绰号往往会在下一个稳定周期之前过期并消失。在这种情况下,您可以使用http://archive.debian.org/debian/and “硬编码” Debian 版本(etch、lenny 等)。

要安装软件包的测试版本,只需使用aptitude install lib-foobar-package/testing,或者直接进入 aptitude 的 GUI 并选择软件包详细信息中的版本(在您正在查看的软件包上按 Enter 键)。

如果您收到有关软件包冲突的投诉,请先查看解决方案。在大多数情况下,第一个解决方案是“不要安装此版本”。学习使用每个软件包的接受/拒绝解析器选项。例如,如果您正在安装 foobar-package/testing,并且第一个解决方案是“不要安装 foobar-package/testing”,则将该选项标记为拒绝,其他解决方案将永远不会再转向该路径。在这种情况下,您可能必须安装一些其他测试软件包。

如果情况变得过于棘手(例如,它试图升级 libc 或内核或其他大型核心系统),那么您可以拒绝这些升级路径,或者干脆完全放弃初始升级。请记住,只有在您允许的情况下,它才会将内容升级到测试/不稳定版本。

编辑:修复了一些优先级别针,并更新了列表。

答案2

添加/etc/apt/apt.conf.d以下文件

99defaultrelease

APT::Default-Release "stable";

添加/etc/apt/sources.list.d测试/不稳定源的 URL

stable.list

deb     http://ftp.de.debian.org/debian/    stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/    stable main contrib non-free

deb     http://security.debian.org/         stable/updates  main contrib non-free

testing.list

deb     http://ftp.de.debian.org/debian/    testing main contrib non-free
deb-src http://ftp.de.debian.org/debian/    testing main contrib non-free

deb     http://security.debian.org/         testing/updates  main contrib non-free

跑步

apt-get update

然后安装你需要的东西

apt-get -t testing install something

如果你安装的东西有很多依赖项,一定要非常小心。最好不要在生产中这样做。

您也可以试试运气向后移植或类似的存储库。

答案3

apt_preferences

在 /etc/apt/preferences 文件中定义系统应“安全升级”到的默认级别:
apt_preferences 命令

您可以使用 apt_preferences 做很多事情,但为了简单起见......

我需要安装一个仅在测试版中可用的软件包 (autoMysqlBackup)。解决方案是将以下内容添加到 /etc/apt/preferences:

Explanation: Uninstall or do not install any Debian-originated
Explanation: package versions other than those in the stable distro
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release o=Debian
Pin-Priority: -10

通过将多个存储库添加到 /etc/apt/sources.list,aptitude 现在将仅升级到您指定的版本,即使列出了较新版本的存储库(在本例中为“稳定”)。

deb http://mirror.aarnet.edu.au/debian/ lenny main
deb-src http://mirror.aarnet.edu.au/debian/ lenny main
deb http://mirror.aarnet.edu.au/debian/ squeeze main
deb-src http://mirror.aarnet.edu.au/debian/ squeeze main

因此,要安装该软件包,您只需要做的就是:

$ aptitude install -t testing packageName 

答案4

Debian 文档对该主题进行了详尽的介绍,我强烈建议深入研究,因为它将真正揭示 Debian 系统的美妙之处。

看一下如何保持混合系统,它将解释您需要知道的一切。

相关内容