美文网首页云计算学习
Git工具链进行deb打包

Git工具链进行deb打包

作者: cheneydc | 来源:发表于2016-12-28 22:33 被阅读175次

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

Git打包仓库

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

  • master 用来管理 debian/* 的分支
  • upstream 用来放上游版本的分支
  • pristine-tar 用来放上游 tarball 的分支

这里面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目录中。

参考资料

相关文章

  • Git工具链进行deb打包

    稍微做了一下deb打包内容的学习,最经典的当然还是要数debian的新维护者手册。打包基本的需求一个是上游源码,即...

  • dpkg命令整理

    管理系统的里deb包,可以对其安装、卸载、deb打包、deb解压等操作,与之相关apt-get工具可以在线下载 d...

  • 面试-前期技术总结

    管理工具 git: 版本管理控制工具 ** webpack:** 打包工具 SVN: grount: 禅道:项目管...

  • 重新打包deb

    mkdir -p extract/DEBIAN 先新建个临时目录 dpkg-deb -x package.deb ...

  • spark window下 源码编译 hdp-2.6.5.0-2

    下载git,运行git bash,打包编译全部在git bash里进行 配置 window环境JAVA_HOEM=...

  • MAC 常用命令行 2019-01-16

    ###查看 deb 安装包文件类型及权限$make package 使用theos打包deb 文件 $ make ...

  • vue 中webpack学习

    webpack模块化打包机 或者 模块打包工具。它是一个工具。打包工具“打包”,帮助我们将不同的资源和文件,进行打...

  • 面试-前期技术总结

    管理工具 git: 版本管理控制工具webpack: 打包工具SVN:grount:禅道:项目管理码云:管理工具 ...

  • git使用笔记

    一 使用git进行代码打包 Create a tar archive that contains the cont...

  • [nghttp2]压测工具,源码编译并进行deb打包过程

    阅读目录(Content) 环境要求 我的环境是DEEPIN基于Ubuntu,so属于‘大便’系列。 要为nght...

网友评论

    本文标题:Git工具链进行deb打包

    本文链接:https://www.haomeiwen.com/subject/izhuvttx.html