deb包制作 学习备忘


原文地址 : 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值