织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>PC常识>

deb包 建包原理

落鹤生 发布于 2012-03-26 18:15 点击:次 
首先,如果你不理解debian/rules文件,可以先查看一下《Not Your Grandpa’s Debhelper》
TAG:

首先,如果你不理解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)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201203/15874.html]
本文出处:CSDN博客 作者:yuyin86 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容