基于流程的debian包管理体系快速命令参考手册

基于流程的快速命令参考手册

流程1:系统bug修复(暂时指Ubuntu 系列的系统)

流程2:维护现有的debian包

流程3:打包上游软件

1. 系统bug修复

①定位软件source包

方法a:根据包名关键字查找

dpkg -l | grep <keyword>(只包括已安装的软件包)

或者
apt list | grep <keyword>(包括未安装的软件包)

方法b:根据某个文件名查找

dpkg -S <filename>

或者
apt-file search <filename>

注意:apt-file search命令获得的为binary包名,下条命令根据binary包名获得对应的source包名

apt-cache showsrc <binary-package-name> | grep ^Package

②获取软件source包

方法a:从库中获取

apt-get source <package-name> (不包含revision信息)

如果需要导入bzr版本控制系统:

bzr init <package-name>-<version>

cd <package-name>-<version>

bzr import-dsc ../<package-name>_<version>.dsc

方法b:从launchpad上获取

bzr branch lp:<package-name> (默认是trunk分支)

bzr branch lp:<package-name/Series-name>(指定分支名)

bzr branch lp:ubuntu/<release>/<package-name>

③在source包上fix

建立bug分支,简单命名为fix-bug-123456

bzr branch <branch-directory-name> fix-bug-123456

cd fix-bug-123456

bzr logbzr qlog(查看revision信息)

bzr revert -r <revision-num> (代码回滚)

然后,

方法a:直接修改或新增某个文件(针对非quilt包)

bzr add <modified-files>

bzr commit

方法b:使用quilt补丁系统

(已经对quilt进行了配置,且位于分支根目录树下)

quilt applied (检查已经应用的patches)

quilt pop (移除处于top位置的patch)

quilt push (应用处于top位置的patch)

quilt new newpatch-name.diff (建立新的patch,该patch会处于top位置)

quilt add <要修改或新增的文件名>

quilt refresh

bzr add debian/patches/newpatch-name.diff

bzr add .pc/*

bzr commit

方法c:使用edit-patch补丁操作命令(对于没有使用quilt而是使用其他patch系统的软件包):

`edit-patch newpatch-name (然后根据提示完成一系列工作)

patch -p1 < upstream -patch.patch (导入某个上游patch)

④测试fix

方法a:使用pbuilder(在一个独立干净的环境里)

pbuilder create (如果没有构建pbuilder环境)

bzr builddeb -- -S

pbuilder-dist <release> build ../<package>_<version>.dsc

sudo dpkg -i ~/pbuilder/<release>_result/<package>_<version>.deb

方法b:直接使用debuild

apt-get build-dep <package-name> (获取依赖)

debuild

sudo dpkg -i ../<package>_<version>.deb

方法c:使用launchpad上的ppa

debuild -S -sa (该版本的包在Ubuntu库中已经存在)

debuild -S -sd (如果不存在)

然后:

dput ppa:<your-lp-id>/ppaname <source.changes>

最后从launchpad上下载.deb文件进行安装测试

注意:以下为对deb包操作的命令

ar tv <package>_<version>.deb (打开包)
dpkg -c <package>_<version>.deb (列出包中所有文件名)
dpkg -I <package>_<version>.deb (包的信息)
sudo dpkg -i ../<package>_<version>.deb (安装该包)

如果测试没通过回到③,通过则到⑤。

⑤文档化fix(必要的情况下执行该步骤)

dch -i (如果使用了edit-patch就不需要再执行该命令)

⑥提交fix

bzr push lp:~<yourlpid>/ubuntu/<release>/<package-name>/fix-bug-123456

bzr lp-propose (将打开launchpad上对应的页面,在此处申请分支合并)

2. 维护现有的debian包

①获取软件包

方法a:1.②.a

方法b:1.②.b

方法c:从Internet上

dget <url>.dsc

dpkg-source -x file.dsc

②升级软件包

③构建软件包

方法:1.④.a/b/c

④发布软件包

3. 打包上游软件

①获取上游软件

wget <URL>curl -O <URL>

改名为_.orig.tar.gz

然后解压

tar xf <source_package>_<upstream_version>.tar.gz

②生成debian目录

cd <source_package>-<upstream_version> && dh_make

③编辑debian目录下的文件

获取debian/control文件所需要的依赖的方法:

dpkg-depcheck -d ./configure (根据configure文件)

objdump -p /usr/bin/foo | grep NEEDED (根据编译后的可执 行文件获得依赖的共享库)

④构建包

方法:1.④.a/b/c

⑤使用lintian检查错误

lintian <*>.dsc

lintian <*>.deb

⑥发布包

方法a:1.④.c(使用自己的ppa)

从ppa安装软件的命令 :

sudo add-apt-repository ppa:<your-lp-id>/ppaname

sudo apt-get update