如何运行Debian稳定版,但安装一些测试包?


Answers:


183

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

“测试相当稳定?” , 你问。是。为了使程序包从不稳定状态迁移到测试状态,它必须连续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

您也可以添加oldstablein sources.lists.dpreferences.d(使用1的优先级),尽管该绰号将在下一个稳定周期之前趋于消失并消失。在这种情况下,您可以使用http://archive.debian.org/debian/和“硬编码” Debian版本(蚀刻,lenny等)。

要安装软件包的测试版本,只需使用aptitude install lib-foobar-package/testing,或直接跳到aptitude的GUI并在软件包详细信息中选择版本(在您要查看的软件包上按回车即可)。

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

如果它变得过于繁琐(例如正在尝试升级libc或内核或其他大型核心系统),那么您可以拒绝这些升级路径,也可以完全退出初始升级。请记住,如果您允许,它只会将内容升级到测试/不稳定。

编辑:修复了一些优先级的引脚,并更新了列表。


4
apt-get update创建配置文件后运行了吗?

3
使用此方法时,我得到(在我看来是)不一致的行为。“ apt-get install -t测试appX”与“ apt-get install appX / testing”的功能不同(请参阅serverfault.com/q/646934/132528)-我猜测这只是此方法的方式导致优先事项得到解决,即使这对我来说并不直观?
eugenevd 2014年

7
重要提示:作者为稳定/安全性选择的固定优先级值高于默认发布值... 有关更多信息,请参阅serverfault.com/a/653552/120130
Alex Ryan

7
这个答案打破了我的系统。尝试执行后sudo apt-get update,出现更新错误。然后重新启动,这给了我Xsession error,再次重新启动,现在我没有GUI。对/dev/sda1/已满。大。
luchonacho

3
我将建议人们注意这篇文章的负面评论。我只是在最近的Debian 9更新中对此有所了解,已通过还原这些更改进行了更正。留意Debian在此问题上的文章中的建议:wiki.debian.org/DontBreakDebian(滚动到不做FrankenDebian)
布兰登·阿诺德

98

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

99defaultrelease

APT::Default-Release "stable";

/etc/apt/sources.list.d-添加测试/不稳定的来源网址

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

如果您安装具有大量依赖关系的内容,请非常小心。最好不要在生产中这样做。

您也可以在反向移植或类似的存储库中尝试运气。


1
哇。那很快。我发帖是为了分享我刚遇到的信息!好东西!
加雷斯2009年

我以前从未真正使用过apt.conf方法。首选项文件方法似乎更简单,但控制起来却不太精确。-合作社
合作社

4
答案需要升级;现在,压缩变得稳定,而lenny变得不稳定,此配置将彻底破坏一切。
El Yobo

1
不再可用,请更新
Lothar 2012年

4
在较新的Debian版本中,没有apt.conf文件,而是编辑/etc/apt/apt.conf.d/70debconf
Hayden Thring 2013年

49

apt_preferences

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

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

我需要安装仅在Testing中可用的单个软件包(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 

这也是一个好方法,不如apt.conf那样简单,但可以让您以相对的方式控制所有不同的源。
合作社

2
这对于任务来说太复杂了...使用APT :: Default-Release确实会将发行版的引脚优先级设置为990(类似于您将其设置为900的方式),而实际上不需要负的引脚。 。在dist升级期间,稳定软件包始终具有优先级,一旦您在命令行上明确列出了某些内容,其负固定优先级就会被忽略。
拉斐尔·赫尔佐格(RaphaëlHertzog),2009年

我不确定如何回复@Raphael。这似乎是一种非常优雅的处事方式。几年前,我曾经使用过apt pin,但是我从来没有真正“弄懂”它。我上面使用的示例直接来自apt_preferences手册页。
加雷斯

2
确认这在挤压时效果很好
tomfanning 2012年

3
@Lothar:它确实在Debian 6上起作用。仅仅因为文件不存在并不意味着它就不起作用。只需创建文件并添加设置即可。从手册页中引用:“如果没有首选项文件或文件中没有适用于特定版本的条目,则分配给该版本的优先级就是该版本所属发行版的优先级。”
rzetterberg

13

对于它的价值,我经常看到的一般建议是“不要将稳定与任何东西混合在一起”。大多数混合系统教程都是针对混合测试和不稳定的。

原因似乎是,如果您将稳定与测试结合使用,则非常基本的软件包(如libc6)将需要更新(以便从测试中安装软件),并且一旦这些基本软件包移至测试中,整个系统便会以这种方式漂移。

这里有两种选择:

  1. 使用反向端口
  2. 从测试安装源代码行,然后尝试从source构建所需的更高版本

1
我同意。我只是尝试从测试中更新libdvdread4,因为wheezy / stable中的版本存在错误。它想引入最新的libc。因此,我只是从稳定中获取libdvdread4的源包,并用1行源代码更改对其进行了修补,然后重新构建了它。比从测试中提取各种软件包更好。现在所有程序包仍然是“稳定的”程序包,而我只需要更改1行即可。
dgrant

12

关于debian的文档涉及到这个主题,因此我强烈建议您深入研究它,因为它将真正揭示debian系统的美丽。

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


1
这似乎与@pQd答案中使用的方法相同,因此不适用于debian> = 6.0。另外,链接标题现在显示“过时的文档”。也大多只链接答案。
dequis

@dequis的正确之处在于该链接似乎已过时,但我只是按照Debian 8(测试)上的说明进行操作,以安装来自不稳定的软件包,并且一切似乎都可以正常工作。任何人都有最新的文档链接吗?
domsson

1
这可能就是您要查找的内容:debian.org/doc/manuals/debian-reference/…–
tomdeb

7

另一种方法可以防止安装来自Testing或Sid的过多依赖关系,这是:您告诉apt-get从Testing或Sid获取软件包的源,并使用Debian工具为系统创建软件包(无需手动修补)来源)。

从这里引用:https :
//wiki.debian.org/DebianUnstable#How_do_I_backport_a_sid_package_to_testing_or_stable.3F

如何将sid包反向移植到测试或稳定版?

安装Debian源代码(以及开发工具,尤其是debhelper,devscripts和build-essential),然后构建软件包。

一步步:

add a deb-src line for sid to your sources.list

apt-get update

apt-get build-dep PACKAGE_NAME

apt-get -b source PACKAGE_NAME 

产生的debs应该在当前目录中,并且可以与dpkg -i the.deb一起安装。


4

我已经做了很长时间了,可以自信地说它足够安全并且可以方便使用。在以下设置中,默认情况下将安装稳定版本,但是如果需要,Aptitude还可以让您选择向后移植或不稳定的版本:

在此处输入图片说明

有四件事需要编辑,需要设置默认的锁定版本,源需要反向移植和添加不稳定,降低反向移植/不稳定软件包的锁定优先级,并且需要修改能力显示设置以显示锁定。

  • 创建一个'/etc/apt/apt.conf.d/10defaultrelease'并使其内容如下:
Apt :: default-释放“稳定”;
  • 编辑您的“ /etc/apt/sources.list”以添加不稳定的源和向后移植源,因此如下所示:
#deb cdrom:[Debian GNU / Linux 6.0.0 _Squeeze_-官方多体系结构amd64 / i386 NETINST#1 20110205-14:45] / squeeze main

deb http://ftp.us.debian.org/debian/挤压主要
deb-src http://ftp.us.debian.org/debian/压缩主要

deb http://security.debian.org/ squeeze / updates主要
deb-src http://security.debian.org/ squeeze / updates主要

#squeeze-update,以前称为“ volatile”
deb http://ftp.us.debian.org/debian/ squeeze-updates主要
deb-src http://ftp.us.debian.org/debian/ squeeze-updates主要

#压缩反向端口
#http://backports.debian.org/Instructions/
deb http://backports.debian.org/debian-backports squeeze-backports main

#不稳定
#http://wiki.debian.org/AptPreferences
deb http://ftp.us.debian.org/debian/不稳定的main
deb-src http://ftp.us.debian.org/debian/不稳定的主程序

#非免费 太阳爪哇
#deb http://ftp.us.debian.org/debian/挤压非自由
#deb-src http://ftp.us.debian.org/debian/挤压非自由
  • 编辑etc/apt/preferences固定文件-如果文件不存在,请创建它。
#封装固定优先级
#参见http://wiki.debian.org/AptPreferences和http://manpages.debian.net/cgi-bin/man.cgi?query=apt_preferences
#
#在螺母壳中安装了最高的PIN
#
#除我们的设置外,默认设置如下:
#990-对于未安装但确实属于我们的APT :: Default-Relase“ stable”设置的版本。
#500-对于未安装且不属于目标发行版的版本
#100-对于已经安装的软件包,这也意味着同一软件包的其他版本
#1-用于实验软件包;“ NotAutomatic:是”的软件包
#
#我们的定位
#400-可以安全地安装反向端口,而无需更新其他软件包
#50-不稳定的软件包,在详细信息屏幕中强行安装,可能会导致冲突

包装:*
销:释放n =挤压后退
密码优先级:400

包装:*
销:释放a =不稳定
  • 创建'/etc/apt/apt.conf.d/100guiconf'并设置Aptitude,使其显示固定信息。
Aptitude :: UI :: Package-Display-Format“%c%a%M%p%Z%v%V%i”;

1
除了上面的更新之外,我还决定从“测试”开发存储库中运行所有系统软件包。因此,在source.list其中应说代号jessie而不是squeeze。Debian的政策testing几乎稳定,软件包几乎与unstable存储库中的软件包一样新。我跑出来的空间,在这里,请看看:wiki.debian.org/DebianReleaseswiki.debian.org/StableUpdateswiki.debian.org/StableProposedUpdates ; 最后两个是其他存储库源。
Daniel Sokolowski

2

如果更多地选择软件包,或者将在多台机器上重复安装,则可以考虑设置一个私有存储库,该私有存储库可镜像一部分正式存储库。这需要一些工作来配置存储库,但是通过在每个客户端上进行最少的配置以及在进行数十次安装时获得可重复的结果,就很容易维护回报。即使只安装一个或两个软件包,我也认为这很有用,并使用此方法来自动化和维护云安装。廉价VPS上的单个服务器可以处理数十个私有存储库。

要配置私有存储库服务器:

# Install aptly.
apt-get install aptly

# Create local mirror (choose a source mirror near you).
aptly mirror create -filter="mirror-contains-no-packages" stretch-roundcube http://httpredir.debian.org/debian stretch main

# Configure filters for local mirror.
aptly mirror edit -filter="Name (% roundcube*)" stretch-roundcube

# Update local mirror.
aptly mirror update stretch-roundcube

# Drop previously published repositories and mirrors, if running these commands in a script.
aptly publish drop stretch

# Drop snapshot, if running these commands in a script.
aptly snapshot drop stretch-roundcube

# Create new snapshot.
aptly snapshot create stretch-roundcube from mirror stretch-roundcube

# Publish snapshot.
aptly publish snapshot -architectures=i386,amd64 -distribution=stretch -component=roundcube -label="Your Name" -origin="Your Name" stretch-roundcube

然后配置您选择的Web服务器以提供静态存储库文件。可能通过安全证书和基本身份验证来保护存储库。

要自动维护您的私有存储库并从上游获取更新,请将以上内容放入脚本中并从cron作业运行。

要配置客户端计算机,请在客户端计算机上:

# Configure private repository without authentication.
echo 'deb http://private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list

# Configure private repository with authentication.
echo 'deb https://hostname:password@private.repository.example.com/ stretch roundcube' > /etc/apt/sources.list.d/private.repository.example.com.list
apt-get install apt-transport-https

# Update.
apt-get update

# Install package.
apt-get install roundcube

要维护客户端计算机并提取所有私有存储库更新,请在客户端计算机上:

# Update.
apt-get update

# Upgrade.
apt-get upgrade

1

另一种选择是从测试中下载源软件包。下载后,APT可以自动构建源程序包。这样,您的稳定软件包将不会受到测试更新的影响。唯一的权衡是,与下载和安装二进制软件包相比,这将花费更多时间。

要配置APT从测试中下载源软件包,只需添加:

deb-src http://<your debian mirror here> testing main

如果您只想遵循当前的测试,而不是将来的测试,则用当前的代号替换“ testing”(在撰写本文时,它为“ buster”)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.