假设您正在运行一个服务器,并且您不想从稳定版(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
。
您还可以oldstable
在sources.lists.d
and中添加一个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 系统的美妙之处。
看一下如何保持混合系统,它将解释您需要知道的一切。