- git fork
- 修改patch(可选)
- build dsc file
- dch -i
- Build a source package .dsc
- Build the binary packages with Pbuilder
- error 及应对
- 参考命令
- symbols file
根据Debian社区大佬的要求,如果想成为一个package maintainer的话,仅仅修改这个field是不够的,还必须有其他的改动。 一开始还确实不太理解,觉得对方是在双标,然而等自己真正实践起来才发现,大佬的想法没错。如果连最基本的都操作不了,如果出了问题怎么解决?
丢人也好,受气也罢,最关键的一点是,是自己太菜。目前的工作完全支持我在这一块全身心的投入,还有什么理由做不好呢?
为什么说Debian社区比较geek呢(其他发行版我用的也不多),就是debian自己的工具,什么都能给你造一个出来,这不,社区给你打早了一个封装git的命令 gbp
,对,应该就是 git-buildpackage
的缩写。
最权威的参考手册莫过于这里. 这里有个中文的文章也是非常的精彩。
首先介绍下目前git-buildpackage的一些workflow。
- debian-branch : 也就是自己维护工作的分支,针对于debian而言(目前默认是debian/main);
- upstream-branch : 这个是用来保持upstream的记录的,默认是 upstream/latest
- pristine-tar branch: 初始化时, gbp会默认创建这个分支。
git fork
Debian开发人员为了自己管理代码与upstream方便的进行交互,一般来说会在 salsa.debian.org创建一个repo。这个repo与upstream的区别就是,摒除git的概念,只从代码的角度来看,就是在salsa repo中添加了一个 debian
的名录。看到这里,你应该就明白这是怎么一回事了吧。
我首先 forked https://salsa.debian.org/debian/jimtcl到自己名下https://salsa.debian.org/vimerbf-guest/jimtcl.其实,这里也就是说明了一件事,如果salsa上面已经存在一个你想维护的包,可以直接fork下来使用。
下面的操作参考这里
我们看一下fork出来的branch情况:
我们看到,除了本地有一个debian/main, upstream/latest分支没有本地分支,pristine-tar我们暂时不用管,gbp会自己创建。 那么,我们得首先创建 upstream/latest 分支(这一块我也不是特别明白,如果有误解,请指正)。
然后upstream,可以使用指定。
如果这个时候报这个错误,可以使用下面的方式:
如果github抽风,还可以使用--pristine-tar
指定tar文件:
其中, --debian-branch
就是我们的本地分支, -u
指定版本。
或者:
现在我们可以看下branch的情况:
接着看一下 git log
:
修改patch(可选)
假设有的话。
build dsc file
因为有很多用法没有搞明白,导致出现了很多的error。下面这个是我试验OK的。
--git-debian-branch=debian/main
指明debian branch。
--git-upstream-tree=upstream
也很关键: How to find the upstream sources used to generate the tarball,因为我是使用的pristine
来引入upstream的源码,如果是其他的,估计不会使用这个选项了。请参考这里,主要是,我这里没有把标签打上去。
--git-pristine-tar-commit
: Commit the pristine-tar delta to the pristine-tar branch if a new tarball was generated and the pristine-tar data isn’t already there. 这段话的意思其实我是拿捏不准的。
--git-export-dir=/tmp/build-area/jimtcl -S
是把该tarball的dsc文件放在这个位置,方便后面的build。
--git-verbose
是可以详细的把执行过程打印出来,方便debug使用。
dch -i
如果已经有了 debian目录,我们可以暂时不必使用(debmake
)命令去自动生成debian目录下的东西;如果没有的话,需要执行。
如果已经有了debian目录,我们的工作就是查漏补缺。第一步就是更新版本号,这里注意一下:
然后使用dch -i
去更改changelog文件。有几个地方需要改一下:
unknown 要改成 unstable(或者experimential),bug number 要改為自己的 ITP number,修改自己的名字與 email.
`debmake只会生成模板,实质性的内容并不会起作用。
Build a source package .dsc
这里的dsc就是debian source control文件,可以参考这里
Build the binary packages with Pbuilder
error 及应对
你看,上面又报了这个错,我们接着拆招吧~
参考命令
这些参考命令放在这里,逐渐加深印象。
简单的命令
假设co-team上传了一个远程分支,你可以更简单的使用:
直接使用git
也就是没有tarball的情况下怎么办?
但是这个也会有问题,需要第一次把 -u
说明正确。
symbols file
原来是旧的 0.79.symbols, 现在是新的0.81.symbols
https://wiki.debian.org/UsingSymbolsFiles