关闭

debian打包工具

1469人阅读 评论(0) 收藏 举报

经过一个星期的调研,对Debian源码包和二进制包的一般结构了解的基础上,对源码文件进行了打包。

这里总结一下打包的工具:

debhelper

debhelper最初是由Joey Hess写的一套程序用于帮助Debian packager 编写rules files。Rules files 是一个makefile文件,包含建立和创建Debian包的指令。

 

dh_make 

dh_make与debhelper是相关的,但不是debhelper的一部分,dh_make复制所有用于建立debian包的模版到一个source directory中,这些模版是根据用户提供的信息和对源代码的粗略检查而自动定制的。运行完dh_make之后,开发者还要对大部分模板文件进行修改才能建立一个deb包。

 

CDBS

CDBS是Common Debian Build System的简写,用于创建Debian packages。CDBS包含很多makefile片段,这些片段可以直接被放在rules files中。

 

rules files

在创建debian包的时候,rules files是必须使用的。rules files本质上是一个makefile 文件,这个makefile文件包含创建一个debian package的rules。rules files主要用于完成诸如,编译软件,安装临时目录,通过临时安装的软件来建立debian package,建立完毕后清空临时文件等。当然,这样有大量的代码需要去完成,但是大多数代码将被复制在rules files中。即使使用了debhelper,这个过程依然无法避免。这种做法也会降低rules files的可读性并使他们难于维护。

 

dh 

参考《Not your Grandpa’s Debhelper》by Joey Hess

#!/usr/bin/make -f

build:

dh build

clean:

dh clean

binary-arch:

dh binary-arch

binary-indep:

dh binary-indep

binary:

dh binary

 

这些makefile片段可以写成

#!/usr/bin/make -f

%:

dh $@

 

现在问题是dh到底做了什么呢?

dh是debhelper的命令序列,是debhelper的关键部分,它会按照debian/rules文件(即上面提到的rules files)中的目标(这些目标包括”build”, ”clean”, ”install”, ”binary-arch”, ”binary-indep”,”binary”等,但用dh的话,是dh_加上目标名,作为dh的target)进行执行。

 

在dh开头的命令集中,有一类是dh_auto_*的命令:

dh_auto_configure → ./configure –prefix=/usr

dh_auto_build → make

dh_auto_test → make test || check

dh_auto_install → make install

du_auto_clean → make distclean || clean

 

在通常情况下,dh_auto的工作是这样的:

./configure –prefix=/usr

make

build:

dh build

 

而在非正常情况下,可能需要你对个别目标进行修改,你可以在命令前加override_对其进行覆盖,例如你需要对dh_auto_build进行修改:

修改前

dh_auto_build:

make

修改后

override_dh_auto_build:

make (此处加上你要添加的选项)

 

我在打包的过程中,主要使用了dh_make和并修改了建包过程中调用到的rules文件,其他必要的文件比如control、copyright、changelog以及一些可选的配置文件{post|pre}{inst|rm}等这里并未涉及,但在dh_make之后,都会生产相应的初始化文件,用户可以根据自己对包的需要进行修改,这里不在详述

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1475438次
    • 积分:20051
    • 等级:
    • 排名:第434名
    • 原创:27篇
    • 转载:1525篇
    • 译文:2篇
    • 评论:135条
    最新评论