首先,如果你不理解debian/rules文件,可以先查看一下《Not Your Grandpa’s Debhelper》
一、建立环境(设置环境变量)
二、检查依赖和冲突
三、用-T选择一个目标,或调用fakeroot debian/rules clean 清除生成树。
四、调用dpkg-source产生源码包(如用-b,产生二进制包)
五、调用debian/rules build,然后fakeroot debian/rules binary-target
六、使用gpg标记.dsc文件
七、调用dpkg-genchanges生成一个.changes文件
八、gpg标记.changes文件
九、如使用-tc,再次调用fakeroot debian/rules clean
详细过程:
一、建立环境
设置环境变量。
二、检查依赖和冲突
检查包名、版本号、体系结构等。
三、用-T选择一个目标,或调用fakeroot debian/rules clean 清除生成树
调用debian/rules中的dh clean。
dh clean 执行的动作是
dh_testdir,测试正确的建包目录,看debian/control等目录是否已经存在。
dh_auto_clean,调用Makefile中clean目标。
dh_clean,对包进行清理,它与dh_auto_clean不同,不会调用Makefile文件。
这样,清理工作就结束了。
四、调用dpkg-source产生源码包(如用-b,产生二进制包)
五、调用debian/rules build
调用debian/rules中dh build。
dh build 执行的动作是
dh_testdir,再次测试正确的建包目录,看debian/control等目录是否已经存在。
dh_auto_configure,在建包前进行配置,一般它会寻找用户目录下的configure脚本并进行调用。
dh_auto_build,用于建包,相当于make,使用Makefile建立相应的文件。
dh_auto_test,自动运行Makefile中的test或check目标项。
六、调用fakeroot debian/rules binary-target(如果使用-S,只建立源文件,将不执行这一项)
这里的binary-target是binary、binary-target、binary-indep,binary是默认的,这里使用默认设置来讲。
调用debian/rules中dh binary。
dh binary执行的动作是
dh_testroot,确保包是由root建立的,当然你可以使用fakeroot工具。
dh_prep,当建立二进制包时,先对建包目录(这里是debian)、debian/tmp等进行清理。
dh_installdirs,在建包目录下创建子目录。
dh_auto_install,自动运行Makefile中的make install,默认安装在debian/<package>下面。
dh_install,把文件安装在建包目录下,这里有两种用法,只有一两个文件时,用dh_install把这一两个文件移到建包目录的相应位置;当有多个二进制文件时,先运行上游文件包的Makefile文件,再把生成的文件移入到建包目录下。
dh_installdocs,安装文档到建包目录的usr/share/doc/<package>
dh_installchangelogs,安装changelogs文件到建包目录的usr/share/doc/<package>下
dh_installexamples,在建包目录下增加example文件。
dh_installman,man page相关。
dh_installcatalogs,自动添加维护脚本片段,用于注册和注销catalogs和supercatalogs。这些脚本片段将被dh_installdeb插入到维护脚本文件中。
dh_installcron,安装cron脚本到建包目录的etc下。
dh_installdebconf,安装debconf使用的文件到建包目录下。
dh_installemacsen,注册emacs。
dh_installifupdown,安装网络hook脚本(if-up、if-down)
dh_installinfo,安装info文件到建包目录的usr/share/info下。
dh_pysupport,添加python支持。
dh_installinit,upstart jobs和init脚本相关。
dh_installmenu,menu files相关。
dh_installmime,mime相关。
dh_installmodules,注册内核模块。
dh_installlogcheck,logcheck rulefiles 相关。
dh_installlogrotate,config相关。
dh_installpam,pam相关。
dh_installppp,ppp脚本相关(ip-up和ip-down)
dh_installudev,udev rules相关。
dh_installwm,注册到window manager。
dh_installxfonts,注册X fonts,会添加依赖到control中。
dh_bugfiles,bug相关。
dh_lintian,lintian相关。
dh_gconf,自动产生postinst和prerm片段,用于注册和注销gconf-schemes。
dh_icons,桌面图标相关。
dh_perl,计算perl依赖。
dh_usrlocal,当有usr/local目录时,删除掉,用维护脚本片段(安装时创建子目录,卸载时删除)来代替。
dh_link,在建包目录中创建syslinks。
dh_compress,压缩建包目录下的文件,确保新文件中的符号链接被更新。
dh_fixperms,把建包目录下usr/share/doc下的文件都chmod 644,把owner给root,把bin、sbin等下的文件设为可执行,去除所有包中文件的uid和gid位。
dh_strip,拆分可执行文件、共享库、静态库。
dh_makeshlibs,自动创建shlibs,调用dpkg-gensymbols产生标志文件。
dh_shlibdeps,计算出包对共享库的依赖,调用dpkg-shlibdeps。
dh_installdeb,安装文件到建包目录的DEBIAN文件夹下(包含postinst、preinst、prerm、preinst等)
dh_gencontrol,调用dpkg-gencontrol,产生control files,并以适当的权限把它们安装到DEBIAN下。
dh_md5sums,生成md5sums文件,其中包含每个文件的md5sums。
dh_builddeb,建立debian二进制包。
七、使用gpg标记.dsc文件
当然,如果有的话。
八、调用dpkg-genchanges生成一个.changes文件
生成<package>.changes。
九、gpg标记.changes文件
这里的gpg是你提前设定的,在debian/control文件中可以看到。
十、如使用-tc,再次调用fakeroot debian/rules clean
dh clean,与第三步相似,用于清理。
(yuyin86)