首页 > 技术 > Debian的版本号及distributions
2009
02-13

Debian的版本号及distributions

Code name

debian archive里真正的distribution目录用的是code name,比如sarge、etch,其他名字的distribution目录如stable/testing/unstable、debian 3.1等都是指向code name目录的符号连结。用code name的好处是可以一致地指定一个distribution,而不管该distribution release的状态,譬如当前处于testing的etch distribtuion在release后仍然可以用etch来引用它。

sid是一个特殊的code name,它的distribution永远处于unstable状态,永远不会release。

Release

testing指向下一个要release的code name(名为code name的distribution)。每天一些叫做britney的scripts都会被运行,从sid中选出满足一定条件的packges更新到testing中。当release manager感觉合适的时候,testing被frozen,这意味这控制packages从unstable到testing的策略变紧了,too buggy的pacakges被移除,除bug fixes外其他改动不允许进入testing。根据进度一段时间过后,testing更进一步被frozen。处理testing的细节被Release Team在debian-devel-announce上发布。当Release Team对当前问题的解决情况达到满意的程度后,testing就被release:testing被改名为stable,于是stable指向了新release的code name,同时一个新拷贝被创建,命名为下一个要release的code name,并成为新的testing,以前的stable被改名为oldstable,于是对应released的code name的版本号(如sarge对应3.1,etch对应4.0)就发布了。

即使是stable distribution仍然不可避免地存在bugs,解决这些bugs的更新包首先被上传到debian archive的stable-proposed-updates目录下作更进一步的测试,Release Team会定期地评价这些更新并决定它们是否可以被包括到stable中,当一批更新被移至stable中后,stable distribution的revision level递增,比如从3.0变为3.0r1,2.2r4变为2.2r5

APT::Default-release

在不同的环境下,我们对debian系统的要求也会不同,比如在生产环境下,我们希望系统是相当稳定的,这时stable就是最好的选择;而对于一个喜欢尝试新功能、新软件的用户,testing或unstable可能更合适些。要达到这样的要求,我们可以在/etc/apt/sources.list文件中只指定一种distribution源,比如想使用stable distribution,就在sources.list里只加入stable源,这样系统上安装的package的版本都会是进入了stable的版本。但有些时候我们也需要一个混合的系统,比如希望在保持整个系统是stable的前提下使用某些还处于testing distribution的package,这样就是一个stable/testing混合的系统了;这时如果只是在sources.list加入testing源,然后用apt-get install/upgrade而不加其他的选项是不会达到我们想要的效果的,因为这时apt系统为所有已安装的packages分配的优先级是100,为所有未安装的packages分配的优先级是500,然后应用下面的规则来选择package的版本:

  • Never downgrade unless the priority of an available version exceeds 1000. (“Downgrading” is installing a less recent version of a package in place of a more recent version. Note that none of APT’s default priorities exceeds 1000; such high priorities can only be set in the preferences file. Note also that downgrading a package can be risky.)
  • Install the highest priority version.
  • If two or more versions have the same priority, install the most recent one (that is, the one with the higher version number).
  • If two or more versions have the same priority and version number but either the packages differ in some of their metadata or the —reinstall option is given, install the uninstalled one.

显然在多数情况下处于testing的版本会被选中,而这并不是我们期望的。虽然可以用apt-get的-t选项来来指定目标distribution,然而每次都指定这个选项也太麻烦,而且还有遗忘的危险,于是APT::Default-Release这个配置参数就自然而然地产生了:如果在/etc/apt/apt.conf中配置这个参数为stable,那么每次apt命令时如果没有指定目标distribution,那么目标distribution就会是stable;当需要操作其他distribution时,只要用-t明确指定就可以了。指定该参数的格式可以这么写:APT::Default-Release stable; 也可以这么写:

APT {   Default-Release stable; };

如果指定了目标distribution(不管是用APT::Default-Release指定还是用-t参数指定),apt用下面的算法来分配优先级:

priority 100
to the version that is already installed (if any).
priority 500
to the versions that are not installed and do not belong to the target release.
priority 990
to the versions that are not installed and belong to the target release.

另外,/etc/apt/preferences的配置也会影响优先级的分配。

References:

最后编辑:
作者:admin
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。