从无到有制作Deb包的一个实例

从无到有制作Deb包的一个实例

从无到有制作Deb包的一个实例20080126

我希望从零开始制作出一个自己的Deb包,意思是连软件的源码都是自己写的,类似于deb from scratch吧,那么这样的一个制作过程大致由三部分构成:
1 源码的编写和测试
2 使用autotools工具生成符合Gnu编程标准的相关文件,如configure,makefile等。
3 按照Debian的方式制作Deb包文件

现在我编写了一个小软件hb-0.01,意思是hyperbolic,是自己写的一个双曲函数和反双曲函数的小软件,总共只有三个文件,在/home/wen1/hb-0.01/目录下,整个制作hb软件的deb包的过程为:

第一步:源码编写
这个步骤由用户自己编写,我的小软件总共只有三个文件,一个是头文件,一个是函数实现的C文件,还有一个主程序C文件,系统显示为:

wen1@lenny:~/hb-0.01$ ls -l
total 12
-rw-r--r-- 1 wen1 wen1 140 2008-01-26 15:17 bolic.h
-rw-r--r-- 1 wen1 wen1 369 2008-01-26 15:17 boliclib.c
-rw-r--r-- 1 wen1 wen1 300 2008-01-26 15:17 hb.c

第二步:使用Autotools工具生成所有符合Gnu编程标准的配置文件等。
这个过程的步骤比较多,具体来说,包括有:
1 使用autoscan命令来生成一个configure的模板文件。系统操作为:

wen1@lenny:~/hb-0.01$ autoscan
wen1@lenny:~/hb-0.01$ ls -l
total 16
-rw-r--r-- 1 wen1 wen1 0 2008-01-26 15:25 autoscan.log
-rw-r--r-- 1 wen1 wen1 140 2008-01-26 15:17 bolic.h
-rw-r--r-- 1 wen1 wen1 369 2008-01-26 15:17 boliclib.c
-rw-r--r-- 1 wen1 wen1 484 2008-01-26 15:25 configure.scan
-rw-r--r-- 1 wen1 wen1 300 2008-01-26 15:17 hb.c

可以看到现在生成了一个configure.scan文件。

2 将configure.scan文件改名为configure.in,并进行相应的修改,我的是:

AC_PREREQ(2.61)
AC_INIT(hb, 0.01, wenheping@tom.com)
AM_INIT_AUTOMAKE(hb,0.01)
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CHECK_FUNCS([sqrt])
AC_OUTPUT(Makefile)

一般来说,这里只有AC_INIT、AC_OUTPUT、AM_INIT_AUTOMAKE三个参数需要根据自己的情况修改一下,其他自动生成的东西不动。

3执行命令aclocal和autoconf,生成configure文件:

wen1@lenny:~/hb-0.01$ aclocal
wen1@lenny:~/hb-0.01$ autoconf
wen1@lenny:~/hb-0.01$ ls -l
total 184
-rw-r--r-- 1 wen1 wen1 31848 2008-01-26 15:36 aclocal.m4
drwxr-xr-x 2 wen1 wen1 4096 2008-01-26 15:36 autom4te.cache
-rw-r--r-- 1 wen1 wen1 0 2008-01-26 15:25 autoscan.log
-rw-r--r-- 1 wen1 wen1 140 2008-01-26 15:17 bolic.h
-rw-r--r-- 1 wen1 wen1 369 2008-01-26 15:17 boliclib.c
-rwxr-xr-x 1 wen1 wen1 130126 2008-01-26 15:36 configure
-rw-r--r-- 1 wen1 wen1 434 2008-01-26 15:35 configure.in
-rw-r--r-- 1 wen1 wen1 300 2008-01-26 15:17 hb.c

可以看到现在生成了configure文件。

4新建Makefile.am文件,再由automake工具根据所写的Makefile.am文件来自动生成Makefile.in文件。
Makefile.am文件一般定义自己的软件最后生成的可执行程序名字、需要连接的库等,我的该文件内容为:

AUTOMAKE_OPTIONS=foreign #
bin_PROGRAMS=hb # 最后生成的可执行文件的名字
hb_SOURCES=hb.c bolic.h boliclib.c # 所有的源码文件
LIBS = -lm # 需要连接math库

然后用automake生成Makefile.in文件,为了符合规范,先:

wen1@lenny:~/hb-0.01$ touch NEWS README AUTHORS ChangeLog

然后的系统显示为:

wen1@lenny:~/hb-0.01$ automake --add-missing
wen1@lenny:~/hb-0.01$ ls
aclocal.m4 bolic.h configure.in INSTALL missing
AUTHORS boliclib.c COPYING install-sh NEWS
autom4te.cache ChangeLog depcomp Makefile.am README
autoscan.log configure hb.c Makefile.in

5执行configure生成Makefile
这一步很简单,生成Makefile之后,还可以使用一些其他的make命令,如make clean,make install,make dist,看看它们会给你什么样的效果。

以上的例子很简单,更为复杂的Autotools的运用和Makefile的编写等内容请参照:
http://www.gnu.org/software/autoconf/ (最权威的了)
http://sourceware.org/autobook/ (很详细的一本书)
http://www.lrde.epita.fr/~adl/autotools.html (这个演示文稿做得相当不错)

第三步:生成Deb包。
生成deb包,有两种方法,一种很简单,直接在软件源码目录内运行checkinstall再回答几个简单的问题就可以了,但一般不推荐使用该办法;二是按照Debian的New Maintainer Guide一步一步制作deb包,详细的过程请参照:
http://www.debian.org/doc/maint-guide/

我的制作过程大致为:
1 下载安装必须的软件:
#apt-get install build-essential dpkg-dev dh-make debhelper fakeroot gnupg lintian Linda pbuilder

2 生成tar.gz文件并把该文件移动到源码的父目录:
wen1@lenny:~/hb-0.01$ make dist
wen1@lenny:~/hb-0.01$ mv hb*.gz ../

3运行dh_make命令。

wen1@lenny:~/hb-0.01$ dh_make -e wenheping@tom.com -f ../hb-0.01.tar.gz

运行该命令之后,原来的软件包将会被打包为hb-0.01.orig.tar.gz并放在父目录中,注意文件名中包名称和版本是以_分割的而且tar.gz之前有orig.。

4 修改Makefile、control等文件。
Debian要求可执行文件不能安装在/usr/local目录下,所以然后要检查Makefile文件的相应的安装位置,我的这个小软件本来就是安装在/usr/bin下,所以不用修改Makefile文件。
至于control copyright等文件,如果只是自己做一个自己用的deb包文件,不改也可以,但是如果是为Debian做的准备上传到Debian apt源中的话,就要按照规范认真地填写。

5 生成deb包文件,我是这样的:
wen1@lenny:~/hb-0.01$ ./configure
wen1@lenny:~/hb-0.01$ make
wen1@lenny:~/hb-0.01$ dpkg-buildpackage –rfakeroot

这样,我的hb软件的deb包文件及其他相关文件就生成了---但是生成于源码目录的父目录中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dpkg是Debian系统中用于安装、卸载和管理软件工具制作deb就是将软件打成.deb文件,方便在Debian系统中进行安装和管理。下面是一个dpkg制作deb的例子。 首先,我们需要将软件打一个目录结构,括必要的文件和文件夹。例如,我们要制作一个名为example的软件,我们可以创建一个example文件夹,并将软件的文件复制到该文件夹中。 在example文件夹中,我们需要创建一个DEBIAN文件夹,用于存放软件的控制文件。在DEBIAN文件夹中,我们需要创建一个control文件,该文件用于描述软件的基本信息,例如软件名称、版本、适用的操作系统等。可以使用一个文本编辑器打开control文件,并按照一定的格式填写信息。 控制文件中的一个示例内容如下: Package: example Version: 1.0 Architecture: amd64 Maintainer: Your Name <[email protected]> Description: This is an example package. 除了control文件,如果软件还依赖其他软件,我们还需要创建一个文件来描述这些依赖。我们可以创建一个名为package_name.dependencies的文件,并在其中列出软件的依赖关系。 在完成上述步骤后,我们可以使用dpkg-deb命令将example文件夹打一个.deb文件。打开终端,切换到example文件夹所在的目录,然后执行以下命令: dpkg-deb -b example 执行完毕后,会生成一个名为example.deb的文件,即制作完成的deb。我们可以通过dpkg命令进行安装、卸载或管理该软件。例如,要安装example.deb,可以执行以下命令: sudo dpkg -i example.deb 通过上述步骤,我们就完成了一个简单的dpkg制作deb的例子。当然,实际制作deb时可能还涉及其他要求和步骤,例如设置文件权限、预/后安装脚本等,这取决于具体的软件需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值