1 基本概念

1.1 健康的安装

在端系统中的一次健康的安装指的是,在安装的包的集合中,所有的依赖都满足,并且没有冲突存在。

这的健康的安装是相对于端系统而言的,并不是相对于整个repo而言的。对整个repo而言,肯定是存在conflict的包的。

1.2 包的可安装性

端系统中存在至少一个健康的安装,这个安装的包集合中包含这个包。

1.3 对repo的最低要求

所有的包都是可以安装的。

1.4 一个包集合是coinstallable的

如果至少存在一个健康的安装能够包含这个包集合中的所有的包,那么称之为coinstallable。

1.5 migration of a package,包迁移

包迁移说的范围是,unstable分支中的包和testing分支中的包。包括以下三个操作:

第一,unstable中的更新版本的包替换掉testing中同名的包。

第二,删除testing分支中的一个在unstable分支中已经不存在的包。

第三,将unstable中的一个新的包加入到testing分支中。

1.6 包迁移的限制条件

第一,有严重已知的bug的包不能迁移;

第二,二进制包和源码包一起迁移;

第三,包迁移版本不能降;

第四,迁移的包要有可安装性;

第五,testing分支中其它的包不能被break;

第六,一个包子集的协同安装性在迁移前后不能被破坏;

1.7 一个包的可安装性

指的是在系统中没有安装该包的conflict包的时候,这个包可以安装并且可以正常使用。

2 不稳定版本、测试版本和稳定版本

2.1 不稳定版本,即sid

这个版本永远只有一个,testing distribution的母亲。这个版本永远都不会被发布。

2.2 测试版本

它copy自old stable版本,它本次stable版本的母亲。在旧的稳定版本的基础上,脚本会自动从unstalbe版本中迁移包到测试版本中,不断生成新的测试版本。

2.3 稳定版本

一旦发布,稳定版本就不动了,除非遇到了关于安全的bug或者严重的bug。

2.4 这三个版本的关系

当testing版本到了一定的时候,会冻结一段时间,当bug被修改到一定的水平后,就会release成stable版本。

如果unstable版本中不再加入新的包,或者不在更新包,那么unstable和testing版本会越来越接近,但是由于新的包的加入,如果没有britney,unstable和testing会越来越不一样,有了britney,testing和unstable才会变得相似起来。

2.5 三个版本的进化过程

任何开发人员都可以向unstable版本中upload进新的包或者新版本的包;

在新的包或者新版本的包进入unstable之后,每天两次,自动脚本britney会试图在unstable版和testing版之间进行包迁移,迁移满足条件的包;

当debian的RM认为时间到了时,他会冻结迁移,只修改testing中的bug,当bug修改到一定的时候,就会release该testing版本成stable版本,并且拷贝一份作为新的testing版本;

当testing被冻结的时候,unstable版本仍然在开发,只不过不会向testing版本迁移。

尽管对于一个repo,判断一个包是不是可以安装是一个NP-complete的问题,但是由于生成这个repo的过程严格把关,已经保证了repo中的每个包的installability。

3 一个包可以由不稳定版迁移到测试版的条件

第一,这个包在不稳定版中已经呆了2、5、10天;

第二,这个包没有新的RC bug;

第三,这个包需要支持所有的架构;

第四,这个包不能使得已经在测试版本中的包不可用;

这个准确来说是,只要不减少repo中可安装的package总数就可以了。

第五,在测试版本冻结的时候,自动迁移过程将会被临时关闭。

debian repository的成长过程的更多相关文章

  1. MySql--学习成长过程

    MySql--学习成长过程 模拟测试: QQ数据库管理 一.创建数据库并添加关系和测试数据 1 ##创建QQ数据库,完成简单的测试 2 3 #创建数据库 4 DROP DATABASE IF EXIS ...

  2. Linux下C高手成长过程

    建议学习路径:  首先先学学编辑器,vim, emacs什么的都行. 然后学make file文件,只要知道一点就行,这样就可以准备编程序了.  然后看看<C程序设计语言>K&R, ...

  3. [No000048]程序员的成长过程中,有哪些阶段?

    有人在 Quora 提问,并补充: 有木有朋友能根据你们自身经历,清晰地划分各个阶段?比如:学习第一门编程语言.第一份工作.职业决策.理解 IT 公司的目标,等等. Quincy Larson 的回复 ...

  4. linux C高手成长过程---书籍推荐

    建议学习路径: 首先先学学编辑器,vim, emacs什么的都行. 然后学make file文件,只要知道一点就行,这样就可以准备编程序了. 然后看看<C程序设计语言>K&R,这样 ...

  5. 彷徨中的成长-记一个文科生的IT成长过程

    纠结了许久,要不要写这篇文章,然而最终还是写了.就权当总结与呻吟吧..当然,呻吟最开始还是发在自己的站点的,忍不住手贱,还是想发博客园. 1 剧透 人算不如天算:时隔多年,我竟然搞起了前端. 2 发端 ...

  6. linux运维工程师成长过程

    原文地址:https://blog.csdn.net/kwame211/article/details/78059331 初级篇 linux运维人员常用工具拓扑详见: 1rsync工具 很多地方经常会 ...

  7. java软件工程师成长过程的学习

    第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架: *第二阶段:java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及: *第三阶段: ...

  8. Linux下C高手成长过程----经典书籍推荐

    http://www.cnblogs.com/shanzhizi/archive/2012/07/10/2585357.html

  9. B站运维团队成长的血泪史

    胡凯,bilibili运维负责人,曾经就职于金山软件.金山网络.猎豹移动,负责运维相关工作.Bilibili是国内最大的年轻人潮流文化娱乐社区,银河系知名弹幕视频分享UGC平台.   95后二次元新人 ...

随机推荐

  1. php中session和cookie的使用及区别

    1.cookie的使用 什么是 Cookie? cookie 常用于识别用户.cookie 是服务器留在用户计算机中的小文件.每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie.通过 P ...

  2. django的基本操作流程

    pip   install django cd Desktop/课上代码02/ #进入到创建项目的目录   django-admin startproject 项目的名称  #创建项目   __ini ...

  3. Python 3.52官方文档翻译 http://usyiyi.cn/translate/python_352/library/index.html 必看!

    Python 3.52官方文档翻译   http://usyiyi.cn/translate/python_352/library/index.html 觉得好的麻烦点下推荐!谢谢!

  4. python基础——7(函数)

    一.函数的定义(函数一定是先定义,后引用) 函数是完成特定功能的代码块. def:声明函数的关键字 fun:函数变量名 ():参数列表,参数可以是0-n个,但是()不能丢 函数体:实现功能的具体代码 ...

  5. 关于面试总结-python笔试题(递归)

    前言 本篇继续收集一些常见的python笔试题,以基础知识为主,递归是面试最喜欢考的一个问题,不管是做开发还是测试,都无法避免考递归.本篇结合实际案例,讲下几种关于递归的场景. 计算n的阶乘 计算n! ...

  6. sql 四舍五入保留两位小数

    select convert(decimal(18, 2), 362315 * 1.0 / 10000) 1. ROUND(该函数,只是负责四舍五入到两位小数,但是不负责截断 只留两位小数,例如下例: ...

  7. HTTP API 自动化测试从手工测试到平台的演变

    不管是 Web 系统,还是移动 APP,前后端逻辑的分离设计已经是常态化,相互之间通过 API 调用进行数据交互.在基于 API 约定的开发模式下,如何加速请求 / 响应的 API 测试,让研发人员及 ...

  8. POJ 1017 Packet

    http://poj.org/problem?id=1017 有1*1 2*2...6*6的物品 要装在 6*6的parcel中 问最少用多少个parcel 一直没有找到贪心的策略 问题应该出现在 总 ...

  9. Linux中的进程与线程

    介绍了Linux下fork()创建进程以及使用pthread_create()创建线程的方法 1. 基于进程的斐波那契数列 在下面的代码中,由子进程进行斐波那契数列的输出,父进程要等待子进程输出完毕, ...

  10. Java面试题总结之Java基础(三)

    1.JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try 块中可以抛出异常吗? 答:Java 通过面向对象的方法进行异常处理, ...