您的位置:首页 > 产品设计 > UI/UE

deb包制作 学习备忘

2010-09-17 16:37 148 查看
原文地址
http://www.us.debian.org/doc/maint-guide/ http://xiaogangccc.blog.hexun.com/21607210_d.html

  ar -x  xxx.deb  可以解包 .deb 文档中的内容。

需要的软件包
:dpkg-dev
, file , gcc , g++ , libc6-dev , make , patch , perl , autoconf ,
automake , dh-make , debhelper , devscripts , fakeroot , gnupg ,
lintian , linda , pbuilder 及 g77 , gpc , xutils 等制作相应包所必须的。

    注:命令 dpkg -s <pkgname> 可以查看已安装包的详细描述信息。

          命令 dpkg -l <'pkgname'> 可以查看包含 'pkgname' 字符串的所有包的基本信息。

软件名称与版本


    deb要求,所有的软件包都必须为 <pkgname>-<version> 的形式,并且 pkgname 全为小写,version 为 X.Y.Z 的形式。因此如果一个软件包默认不满足此要求,则必须对其修改。

首次“Debian“ 化


    首先,确认软件包能够被正确的编译并安装,执行。

    然后,将压缩包重新解包(注:解包得到的文件必须为<pkgname>-<version>的形式)。进入解包后得到的目录,在里面运行下列命令:

  dh_make -e youremail@address -f ../your.pkgname.tar.gz

  将会在当前目录中得到子目录 debian ,此目录中包含一些描述文件。并且还在顶层目录中生成 <pkgname>_<version>.orig.tar.gz 的压缩包。

修改以达到deb安装标准


   
由于大部分的软件包默认被安装到 /usr/local目录下,但debian要求安装到 /usr 目录下,因此在必要时要修改源程序中的
Makefile , Makefile.am/Makefile.in 等文件,甚至是源代码文件以达到debian的安装要求。

debian/ 下的内容:
control , changelog ,copyright , rules ,.... 。

  control : 一个信息头部,包括包名,所属分类(admin, lib, base ,devel ,doc , ... ) ,编译时依赖 , 运行时依赖, 包所提供的功能 等等一些信息。

  copyright : 描述软件的版权信息。

  changelog : 维护者的修改日志,使用如下格式:

gentoo (0.9.12-1) unstable; urgency=low

* Initial Release.

-- Josip Rodin <joy-mg@debian.org>  Wed, 11 Nov 1998 21:02:14 +0100

  rules : 包含用于描述如何精确构建 deb 包的规则,这个文件使用 makefile 语法。

  conffiles.ex : 用于指定哪些文件属于配置文件,通常是将要安装于 /etc 目录下的文件,安装这类文件时会询问用户以确认。

  cron.d.ex : 定要计划任务正常运行才能进行的操作。

  dirs : 指定正常 make install 时并不创建的文件夹。

  docs : 指定要安装的一些文档。也可以在 rules 中的 dh_installdocs 后边直接写入这些文档名。

  init.d.ex : 如果软件需要一个系统启动时的守户程序,则修改它以达到要求。

  manpage.1.ex : nroff 格式的 man 文档模板。

  manpage.sgml.ex : 使用 SGML 来编写 man 文档。此时 Build-Depends 依赖于 doc-to-man 软件包。

  menu.ex : 关于X桌面环境的菜单项定义。

  watch.ex : 可以定义来使用 uscan , uupdate 脚本以监视下载源码的站点。

  package.doc-base.EX : 用于指定除 man , info 文档以外的其它文档。

  preinst.ex ,postinst.ex , prerm.ex,  postrm.ex : 用于指定安装前,安装后,反安装前,反安装后的执行脚本。

完整的构建一次源代码


  当设定完成 debian 目录下的一些规则文件后,就可以使用下列命令完整构建 .deb 包及相应的描述文件。

   dpkg-buildpackage -rfakeroot

  运行上边的命令后执行的大致动作如下:

   a 清理源代码目录树 ( debian/rules clean ),要使用 fakeroot

   b 构建源代码软件包  (dpkg-source -b)

   c 构建程序 ( debian/rules build )

   d 构建二进制软件包 ( debian/rules binary ) , 需要使用 fakeroot

   e 给源代码构建 .dsc 的源代码签名,用到 gnupg

   f  创建 .changes 的上传文件,并给它签名,要用到 dpkg-genchanges 和 gnupg

 命
令执行完毕,将在执行命令的上一层目录生成,<pkg>_<version>-<release>
_<arch>.deb
二进制包,<pkg>_<version>-<release>_<arch>.changes
修改记录文件;

 另外还有 <pkg>_<version>-<release>.dsc
签名文件,<pkg>_<version>-<release>.diff.gz 差异文件,再加上以前生成的
<pkg>_<version>.orig.tar.gz 源始代码文件,只要有这三个文件就可以使用如下命令重
新生成源码目录


  dpkg-source -x  <pkg>_<version>-<release>.dsc

  得到源码目录后,可重复上边“完整的构建一次源代码” 部分重新得到 .deb 包。

快速的 rebuild ( 一般用于调试 )

  fakeroot debian/rules binary

  一般用于快速测试所编写的  rules 文件的正确性。

使用 debuild 命令


   这是一个可以使构建包自动完成的快速方法,而传递的参数可以从文件 /etc/devscripts.conf 或者  ~/.devscripts 文件中获取。

  一般用法 :

  debuild clean

  debuild

dpetch 系统


  只简单地使用 dh_make 与 dpkg-buildpackage 会生成一个大的 .diff.gz 补丁,它将包含 debian 目录中的文件及源代码补丁。

dpkg-deb 或 ar 可解压缩 .deb 包中的文件。

debc 可列出 .deb 包中的文件。

错误检查


   使用命令 : linda -i xxx.changes 或 lintian -i xxx.changes 命令可以检查出一些常见错误,其中以W:开头的代表警告,以 E:开头的代表错误。

  使用命令 debdiff 可用来比较两个二进制软件包中的文件列表。

   “

debdiff old-package.change new-package.change


   使用 interdiff 来比较两个 .diff.gz 文件

    “

interdiff -z old-package.diff.gz new-package.diff.gz


   使用 debi 可以安装一个包。

 pbuilder 包

 
对于 chroot构造环境而言,要核对编译环境的依赖关系, pbuilder 软件包将很有用。因为可以使用 pbuilder 创建一个
chroot 环境, 此环境可以为一个较新的版本,也可以为一个较旧的版本,这样就可以在一台机器上为 ubuntu
的不同版本创建软件包,甚至为debian系统创建软件包.

   最简单的使用方法是,在包含了  .orig.tar.gz , .dsc , .diff.gz 的文件夹中由 root 用户执行下列命令:

  # pbuilder create

  # pbuilder build xxx.dsc

 新构建的包可以在 /var/cache/pbuilder/result 中找到。

   如果是非 root 用户:

    # sudo pbuilder create

    # pbuilderd
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息