DEP-14

最近研究了下ubuntu下的打包方法,发现DEP-14还是很有帮助的,简单翻译一下。
原文链接:http://dep.debian.net/deps/dep14/
目前还是草稿阶段,可以时刻关注。

标题:Git打包仓库的推荐布局
DEP:14
状态:草稿
日期:2016-11-09
推动:Raphael Hertzog hertzog@debian.org
链接:http://dep.debian.net/deps/dep14/
源码:http://anonscm.debian.org/viewvc/dep/web/deps/dep14.mdwn
摘要:使用Git仓库进行Debian打包的推荐命名约定

介绍

这是一个协调用于维护Debian打包工作的Git仓库的建议,有以下目的:
使Debian及其衍生版本更容易在在各自的Git仓库上进行构建(在某些情况下有可能共享一个仓库)

在各种git打包工具之间方便的进行切换。即使所有的工具没有实现相同的工作流,但是至少他们可以有一个同样的命名约定(Debian/上游发布标签,默认打包分支,等)。

范围

本建议为各种在做Debian打包工作相关的Git分支和Git标签定义了命名约定。希望Git打包辅助工具的维护者可以适应这些命名约定(在各自工具的默认配置当中)。

一般原则


供应商命名空间

每一个“供应商”在其打包相关的Git分支和标签中使用其自己的命名空间,比如:Debian使用debina/,Ubuntu使用ubuntu/,等等。
辅助工具通常依赖于dpkg-vendor --query vendor的结果来确认当前的供应商。检索的结果通常需要转换成小写字母。这允许用户通过设置环境变量DEB_VENDOR来覆盖当前供应商(供应商的信息存在于/etc/dpkg/origins/中)。
如果dpkg-vendor不起作用,辅助工具通常以“debian”作为默认值。通常这些工具也会提供相应的命令行参数以设置供应商。

版本调整

当一个Git标签需要参照一个指定的Debian包版本的时候,版本需要调整并适应Git的限制。这种调整是确定并可逆的:

  • 每一个冒号(:)需要替换成百分号(%)
  • 每一个波浪字符()需要替换成()需要替换成下划线(_)
  • 每一对相邻的点号(..)中逐渐需要插入一个井号(#)
  • 如果最后一个字符为点号(.)需要在其后加上一个井号(#)
  • 如果版本以.lock结尾,需要在点号(.)后面插入一个井号(#)变成.#
    lock

这可以用以下的Perl5语句简明的表达:

y/:~/%_/;
s/\.(?=\.|$|lock$)/.#/g;

反向转换:

  • 每一个百分号(%)替换成一个冒号(:)
  • 每一个下划线(_)替换成一个波浪字符(~)
  • 删除井号(#)

打包相关分支和标签


通常来说,打包的分支需要根据目标发行版的代号进行命名。然而我们将开发版本与其他版本进行区分。

开发版本

上传到当前开发分支的软件包应该在<vendor>/master分支中准备。
然而,当多个开发版本经常使用的时候(比如Debian中的unstable和experimental),也可以接受根据目标分发的代号或套件名称命名分支(也可以是debian/sid或者debian/unstable,以及debian/experimental)。这些分支可以是短生命周期的(例如,这些分支可能这些分支可能只保留到被合并到<vendor>/master或者相关的仓库中被<vendor>/master分支中的版本),也可以是永久的(如果<vendor>/master不存在的话)。

注意:如果debian/control中Vcs-Git字段列出的Git仓库没有指明分支(以-b <branch>作为后缀),那么它会把HEAD指向用来打包的最新的上游版本的分支(一个关联到开发版本的分支)。创建这些仓库的辅助工具应该使用类似git symbolic-ref HEAD refs/heads/debian/master一样的命令来更新HEAD到所需要的分支。

稳定版本

当包指向任何非开发版本(例如,稳定版本或者冻结的开发版本),应该使用目标发行版的代号命名的分支。比如Debian,就意味着debian/jessie, debian/wheezy, d/wheezy, debian/wheezy-backports,等。尽量避免以套件名称命名,因为可能随着时间而变化(stable变成oldstable等)。

安全更新和稳定更新应该在相关发行版的分支上处理。以Debian为例,wheezy-security或wheezy-proposed-updates应该在debian/wheezy分支做准备。如果要在两个仓库管理不同的版本包,,可以使用debian/wheezy-security和debian/wheezy-updates。

标记包版本

当发布一个Debian包的时候,打包者会创建并推送一个以<vendor>/<version>命名的标签(最好是签名的)。比如,(最好是签名的)。比如,一个Debian维护者发布一个2:1.2~rc1-1版本的包将会创建一个debian/2%1.2_rc1-1命名的标签,Ubuntu的打包者发布一个1.3-0ubuntu1版本的包将会使用ubuntu/1.3-0ubuntu1。这些标签要明确指向需要构建的提交。

管理上游源码


在Git中导入上游tar包

在Git的工作流中,从tar包中导入上游源码,这需要在“upstream”命名空间下操作。默认情况下,最后的upstream版本应该在upstream/latest分支下导入。并且当多个上游版本的包并发维护时,应创建所需的上游分支。

他们的名字需要基于被跟踪的上游主版本号,比如上游维护的一个稳定版本是1.2分支,在该分支发布1.2.x的小版本号时,这些版本应该在upstream/1.2.x分支中导入(.x后缀明确表明我们指的是一个分支,不是一个与上游1.2版本相对应的标签)。如果上游开发者使用代号来引用他们发布的版本,那么上游分支可以使用相应的代号。

辅助工具应该检测导入的上游版本何时低于upstream/latest中可用的最新版本,并且应创建新分支(基于历史中可用的仍然小于导入版本的最高版本)或选择另一个预先存在的上游分支。

通过Git标签导入上游版本

当打包分支是直接基于上游的Git分支的时候,上游通常会会为官方分支提供合适的Git标签。

如果帮助工具必须识别对应于给定上游版本的上游提交,他们应该能够通过查找以下Git标签找到它:upstream/<version>,<version>和v<version>。

upstream/<version>标签应该在打包者需要的时候创建:比如,当它基于Git快照执发布时,或者当上游使用的标签命名方案不遵循上述规则时。

关于pristine-tar

如果打包维护者使用pristine-tar工具逐字节的拷贝上游tar包,需要在pristine-tar分支中完成。

本地包

上述约定主要是针对当上游开发者和打包维护者不是同一伙人的时候。

当上游是Debian(或其衍生版本)的时候,上游厂商一般不使用<vendor>/为前缀(所有其他厂商也应该这样做)。主开发分支可以用master命名来代替目标发行版的代号(当然如果你想的话可以继续使用代号)。

当软件包作为一个本地包(例如,只有一个tar,没有上游代码和打包文件的却别),上游源码的概念以及upstream/*分支的都是没有意义的。请注意,即使上游供应商将包作为本机包提供,下游供应商仍然可以选择以非本地方式打包。

未完。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,816评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,729评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,300评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,780评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,890评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,084评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,151评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,912评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,355评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,666评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,809评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,504评论 4 334
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,150评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,882评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,121评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,628评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,724评论 2 351

推荐阅读更多精彩内容