debian/rules 创建 deb 包

每一个 rules 文件,就像其他的 Makefile 一样,包含着若干条 rules,其中每一个都定义了一个 target 以及其具体操作。 一个新的 rule 以自己的 target 声明开头,后续的行都以 TAB 开头,以指示 target 的具体行为。

当你想要执行一个 rule 的时候,就将 target 名称作为命令行参数来调用。比如说,debian/rules clean binary 会执行 clean 和 binary 两个 target。

以下是对各 target 的简单解释:

  • clean(必需):清理所有编译的、生成的文件或编译树中无用的文件。
  • build(必需):在编译树中将代码编译为程序并生成格式化的文档。
  • build-arch(必需):在编译树中将代码编译为依赖于体系结构的程序。
  • build-indep(必需):在编译树中将代码编译为独立于平台的格式化文档。
  • install(可选):把文件安装到 debian 目录内为各个二进制包构建的文件树。如果有定义,那么 binary* target 会依赖于此 target。(可选)
  • binary(必需):创建所有二进制包(是 binary-archbinary-indep 的合并)。
  • binary-arch(必需):在父目录中创建平台依赖(Architecture: any)的二进制包。
  • binary-indep(必需):在父目录中创建平台独立(Architecture: all)的二进制包。
  • get-orig-source(可选):从上游站点获得最新的原始源代码包。

其中:

  • debian/rules clean 运行了 dh clean,其实际执行的命令为:
    • dh_testdir
    • dh_auto_clean
    • dh_clean
  • debian/rules build 运行了 dh build,其实际执行的命令为:
    • dh_testdir
    • dh_auto_configure
    • dh_auto_build
    • dh_auto_test
  • fakeroot debian/rules binary 执行了 fakeroot dh binary,其实际执行的命令为:
    • dh_testroot
    • dh_prep
    • dh_installdirs
    • dh_auto_install
    • dh_install
    • dh_installdocs
    • dh_installchangelogs
    • dh_installexamples
    • dh_installman
    • dh_installcatalogs
    • dh_installcron
    • dh_installdebconf
    • dh_installemacsen
    • dh_installifupdown
    • dh_installinfo
    • dh_installinit
    • dh_installmenu
    • dh_installmime
    • dh_installmodules
    • dh_installlogcheck
    • dh_installlogrotate
    • dh_installpam
    • dh_installppp
    • dh_installudev
    • dh_installwm
    • dh_installxfonts
    • dh_bugfiles
    • dh_lintian
    • dh_gconf
    • dh_icons
    • dh_perl
    • dh_usrlocal
    • dh_link
    • dh_compress
    • dh_fixperms
    • dh_strip
    • dh_makeshlibs
    • dh_shlibdeps
    • dh_installdeb
    • dh_gencontrol
    • dh_md5sums
    • dh_builddeb
  • fakeroot debian/rules binary-arch 执行了 fakeroot dh binary-arch
  • fakeroot debian/rules binary-indep 执行了 fakeroot dh binary-indep,这会运行几乎和 fakeroot dh binary 一样的命令,但 dh_stripdh_makeshlibsdh_shlibdeps 除外,其他命令则均附加 -i 选项。

假设上游存在一个 Makefile 的环境,dh_auto_build 会使用 make 命令执行 Makefile 中的第一个 target。

参考文献:
[1] debian 目录中的必须内容
[2] 使用fakeroot模拟root权限执行程序

你可能感兴趣的:(debian/rules 创建 deb 包)