基于流程的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 log 或 bzr 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>
改名为
然后解压
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