debian打包工具

经过一个星期的调研,对Debian源码包和二进制包的一般结构了解的基础上,对源码文件进行了打包。

这里总结一下打包的工具:

debhelper

debhelper最初是由Joey Hess写的一套程序用于帮助Debian packager 编写rules files。Rules files 是一个makefile文件,包含建立和创建Debian包的指令。

 

dh_make 

dh_make与debhelper是相关的,但不是debhelper的一部分,dh_make复制所有用于建立debian包的模版到一个source directory中,这些模版是根据用户提供的信息和对源代码的粗略检查而自动定制的。运行完dh_make之后,开发者还要对大部分模板文件进行修改才能建立一个deb包。

 

CDBS

CDBS是Common Debian Build System的简写,用于创建Debian packages。CDBS包含很多makefile片段,这些片段可以直接被放在rules files中。

 

rules files

在创建debian包的时候,rules files是必须使用的。rules files本质上是一个makefile 文件,这个makefile文件包含创建一个debian package的rules。rules files主要用于完成诸如,编译软件,安装临时目录,通过临时安装的软件来建立debian package,建立完毕后清空临时文件等。当然,这样有大量的代码需要去完成,但是大多数代码将被复制在rules files中。即使使用了debhelper,这个过程依然无法避免。这种做法也会降低rules files的可读性并使他们难于维护。

 

dh 

参考《Not your Grandpa’s Debhelper》by Joey Hess

#!/usr/bin/make -f

build:

dh build

clean:

dh clean

binary-arch:

dh binary-arch

binary-indep:

dh binary-indep

binary:

dh binary

 

这些makefile片段可以写成

#!/usr/bin/make -f

%:

dh $@

 

现在问题是dh到底做了什么呢?

dh是debhelper的命令序列,是debhelper的关键部分,它会按照debian/rules文件(即上面提到的rules files)中的目标(这些目标包括”build”, ”clean”, ”install”, ”binary-arch”, ”binary-indep”,”binary”等,但用dh的话,是dh_加上目标名,作为dh的target)进行执行。

 

在dh开头的命令集中,有一类是dh_auto_*的命令:

dh_auto_configure → ./configure –prefix=/usr

dh_auto_build → make

dh_auto_test → make test || check

dh_auto_install → make install

du_auto_clean → make distclean || clean

 

在通常情况下,dh_auto的工作是这样的:

./configure –prefix=/usr

make

build:

dh build

 

而在非正常情况下,可能需要你对个别目标进行修改,你可以在命令前加override_对其进行覆盖,例如你需要对dh_auto_build进行修改:

修改前

dh_auto_build:

make

修改后

override_dh_auto_build:

make (此处加上你要添加的选项)

 

我在打包的过程中,主要使用了dh_make和并修改了建包过程中调用到的rules文件,其他必要的文件比如control、copyright、changelog以及一些可选的配置文件{post|pre}{inst|rm}等这里并未涉及,但在dh_make之后,都会生产相应的初始化文件,用户可以根据自己对包的需要进行修改,这里不在详述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
无法满足构建依赖:build-depends: debhelper-compat (= 12) 是指在构建一个软件包时,发现debhelper-compat的版本必须是12,但系统中找不到这个版本的情况。 解决这个问题的方法有以下几种: 1. 更新debhelper-compat的版本:可以通过升级系统中的debhelper-compat来解决这个问题。可以使用包管理器如apt或者dpkg来更新软件包。首先尝试运行sudo apt update来更新软件源,然后运行sudo apt upgrade来升级软件包。如果debhelper-compat的版本已经是最新的了,可以考虑添加其他软件源或者手动下载最新的debhelper-compat并进行安装。 2. 修改软件包的构建依赖:如果你无法或者不愿意升级debhelper-compat的版本,可以考虑修改软件包的构建依赖,将debhelper-compat的版本要求放宽。打开软件包的源代码或者构建文件,找到build-depends中的debhelper-compat并将其版本要求更改为适用于你系统的版本。 3. 使用其他方法构建软件包:如果以上两种方法都不适用,可以尝试使用其他的构建方法来解决问题。例如,可以考虑手动编译软件包的源代码并进行构建,或者使用其他的构建工具替代debhelper-compat来完成软件包的构建过程。 总之,无法满足构建依赖:build-depends: debhelper-compat (= 12) 的问题可以通过更新debhelper-compat的版本、修改软件包的构建依赖或者使用其他的构建方法来解决。具体的解决方法需要根据具体的情况和需求来确定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值