debian repository的成长过程
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的成长过程的更多相关文章
- MySql--学习成长过程
MySql--学习成长过程 模拟测试: QQ数据库管理 一.创建数据库并添加关系和测试数据 1 ##创建QQ数据库,完成简单的测试 2 3 #创建数据库 4 DROP DATABASE IF EXIS ...
- Linux下C高手成长过程
建议学习路径: 首先先学学编辑器,vim, emacs什么的都行. 然后学make file文件,只要知道一点就行,这样就可以准备编程序了. 然后看看<C程序设计语言>K&R, ...
- [No000048]程序员的成长过程中,有哪些阶段?
有人在 Quora 提问,并补充: 有木有朋友能根据你们自身经历,清晰地划分各个阶段?比如:学习第一门编程语言.第一份工作.职业决策.理解 IT 公司的目标,等等. Quincy Larson 的回复 ...
- linux C高手成长过程---书籍推荐
建议学习路径: 首先先学学编辑器,vim, emacs什么的都行. 然后学make file文件,只要知道一点就行,这样就可以准备编程序了. 然后看看<C程序设计语言>K&R,这样 ...
- 彷徨中的成长-记一个文科生的IT成长过程
纠结了许久,要不要写这篇文章,然而最终还是写了.就权当总结与呻吟吧..当然,呻吟最开始还是发在自己的站点的,忍不住手贱,还是想发博客园. 1 剧透 人算不如天算:时隔多年,我竟然搞起了前端. 2 发端 ...
- linux运维工程师成长过程
原文地址:https://blog.csdn.net/kwame211/article/details/78059331 初级篇 linux运维人员常用工具拓扑详见: 1rsync工具 很多地方经常会 ...
- java软件工程师成长过程的学习
第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架: *第二阶段:java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及: *第三阶段: ...
- Linux下C高手成长过程----经典书籍推荐
http://www.cnblogs.com/shanzhizi/archive/2012/07/10/2585357.html
- B站运维团队成长的血泪史
胡凯,bilibili运维负责人,曾经就职于金山软件.金山网络.猎豹移动,负责运维相关工作.Bilibili是国内最大的年轻人潮流文化娱乐社区,银河系知名弹幕视频分享UGC平台. 95后二次元新人 ...
随机推荐
- 条款15:在资源管理类中提供对原始资源的访问(Provide access to raw resources in resource-managing classes)
NOTE: 1.APIs往往要求访问原始资源(raw resources),所以每一个RAII class应该提供一个“取得其所管理之资源”的办法. 2.对原始资源的访问可能经由显示转换或隐式转换.一 ...
- tornado框架基础05-模板继承、UImodul和UImethods
01 模板继承 父模板 <html lang="en"> <head> <meta charset="UTF-8"> ...
- Python 装饰器 property() 函数
描述:property() 函数的作用是在新式类中返回属性值. @property 装饰器简单理解就是负责把一个方法变成属性调用 下面理解property()方法语法: class property( ...
- kafka 理论学习
http://blog.csdn.net/paul342/article/details/50479491 kafka基本知识.
- python selenium xpath定位方式
作者刚开始写博客,格式和语言方面难免存在问题,请大家海涵,如果有问题也请直接指出 xpath是一种在xm文档中定位的语言,详细简介,请自行参照百度百科,本文主要总结一下xpath的使用方法,个人看法, ...
- Leetcode 224.基本计算器
基本计算器 实现一个基本的计算器来计算一个简单的字符串表达式的值. 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 . 示例 1: 输入: "1 + 1 ...
- UVA624 CD,01背包+打印路径,好题!
624 - CD 题意:一段n分钟的路程,磁带里有m首歌,每首歌有一个时间,求最多能听多少分钟的歌,并求出是拿几首歌. 思路:如果是求时常,直接用01背包即可,但设计到打印路径这里就用一个二维数组标记 ...
- 查看java进程中哪个线程在消耗系统资源
1 top -p $pid -H 加上-H这个参数后,会列出有哪些线程.这样就可以看到哪个线程id最消耗系统资源了.看到的线程id是10进制的数字. 2 jstack $pid 可以打印出制定jav ...
- BZOJ4373 算术天才与等差数列 题解
题目大意: 一个长度为n的序列,其中第i个数为a[i].修改一个点的值询问区间[l,r]内的数从小到大排序后能否形成公差为k的等差数列. 思路: 1.一段区间符合要求满足:(1)区间中的max-min ...
- bzoj1202:[HNOI2005]狡猾的商人 【并查集】
Description 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的.账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i=1,2,3...n-1,n), .当 ...