云计算学习

Git工具链进行deb打包

2016-12-28  本文已影响175人  cheneydc

稍微做了一下deb打包内容的学习,最经典的当然还是要数debian的新维护者手册。打包基本的需求一个是上游源码,即.orig.tar.gz,还有一个主要是debian的控制文件.debian.tar.xz,整体来看经典的打包方式有些繁琐,长期使用git进行开发工作,工作流程也不太习惯,后来发现有git相关的工具集,那么当然要尝试一下啦。

Git打包仓库

使用git工具集实际上是将debian的控制文件用git来进行管理,那么一个这样的仓库的分支结构是什么样的呢?

这里面pristine-tar实际上是单独的一个分支,以增量的方式对各个上游tarball进行存放的分支,也可以不使用的。

打包流程

打包流程.png

从各方面的文档内容我将git工具集打包的过程整理成三个部分了。

导入上游源代码

将上游源码制作成.orig.tar.gz的tarball,拿cinder举例,自定义版本为5.5.5,那tarball应该是cinder_5.5.5.orig.tar.gz,通过gbp import-orig命令将tarball导入到打包仓库中。

首先在仓库中切换到upstream分支

# git checkout upstream

导入tarball

# gbp import-orig ../cinder_5.5.5.orig.tar.gz 
What is the upstream version? [5.5.5] 
gbp:info: Importing '../cinder_5.5.5.orig.tar.gz' to branch 'upstream'...
gbp:info: Source package is cinder
gbp:info: Upstream version is 5.5.5
gbp:info: Merging to 'master'
gbp:info: Successfully imported version 5.5.5 of ../cinder_5.5.5.orig.tar.gz

修改debian文件

导入tarball命令执行后会自动在upstream的导入commit打上相应的上游标签,这里是'upstream/5.5.5',同时将upstream分支merge到master分支,这时候我们切换回master分支,修改debian内容,这里需要注意,在master分支只能修改debian目录中的内容,其他不能修改。
修改后使用dch来更新changelog:

# dch -D trusty --newversion "1:5.5.5-0ubuntu1" "5.5.5 version releases." -b
libdistro-info-perl is not installed, Debian release names are not known.
libdistro-info-perl is not installed, Ubuntu release names are not known.
dch warning: Unable to determine if trusty is a valid Ubuntu release.

然后将master的分支提交,打上debian标签,如'debian/5.5.5'。

执行打包

然后就可以开始打包了,打包工作是要在master分支进行的:

gbp buildpackage \
> --git-upstream-branch='upstream/5.5.5' \
> --git-upstream-tree=tag \
> --git-debian-branch=master \
> --git-no-pristine-tar \
> -sa -uc -us
gbp:info: Exporting 'HEAD' to '/root/build_git_test/testsw/build-area/cinder-tmp'
gbp:info: Moving '/root/build_git_test/testsw/build-area/cinder-tmp' to '/root/build_git_test/testsw/build-area/cinder-5.5.5'
 dpkg-buildpackage -rfakeroot -D -us -uc -i -I -sa
...
dpkg-deb: building package `cinder-backup' in `../cinder-backup_5.5.5-0ubuntu1_all.deb'.
 dpkg-genchanges -sa >../cinder_5.5.5-0ubuntu1_amd64.changes
dpkg-genchanges: including full source code in upload
 dpkg-source -i -I --after-build cinder-5.5.5
dpkg-buildpackage: full upload (original source is included)

这样就可以制作出deb格式的二进制安装包了,deb包会放在与打包仓库统计的build-area目录中。

参考资料

上一篇下一篇

猜你喜欢

热点阅读