下面是使用 dpkg包管理系统制作deb包的过程(站在前人的肩膀上做的修改,已在ubuntu 12.10下验正)
1、新建一个工作目录
mkdir deb
2、新建我们程序的目录
mkdir hellodeb
cd hellodeb
3、编写我们的程序
hellodeb.c代码如下
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("Hello Debian!\n");
return 0;
}
Makefile文件如下:
CC=gcc
TARGET=hellodeb
OBJS=hellodeb.o
BINDIR=/usr/bin
all:$(OBJS)
$(CC) -o $(TARGET) $(OBJS)
install:
cp $(TARGET) $(BINDIR)
clean:
rm -f *.o hello
.PHONY:all clean
4.文件名必须包含文件名和版本号
mv hellodeb hellodeb-1.0
说明:文件名后必须用-,不能用_
5、进入我们的hellodeb-1.0目录
cd hellodeb-1.0
6、我们需要dh_make工具进行打包前的配置,如果是第一使用请先安装dh-make
dh-make安装方法:sudo apt-get install dh-make
安装好后执行:dh_make -e weiguang_jian@126.com --createorig
上面任一命令后都会出现,一下内容:
Type of package: single binary, indep binary, multiple binary, library, kernel module, kernel patch or cdbs?
[s/i/m/l/k/n/b]
我们输入s
Maintainer name : robin
Email-Address : weiguang_jian@126.com
Date : Sun, 21 Apr 2013 16:04:06 +0800
Package Name : hello
Version : 1.0
License : blank
Type of Package : Single
Hit <enter> to confirm:
Done. Please edit the files in the debian/ subdirectory now. You should also
check that the hello Makefiles install into $DESTDIR and not in / .
还有两个重要的提示:
- Please edit the files in the debian/ subdirectory now.
- You should also check that the hellodeb Makefiles install into $DESTDIR and not in / .
7. 我们先关注一下第二个提示,修改Makefile。这里主要是安装路径,修改如下:
CC=gcc
TARGET=hellodeb
OBJS=hellodeb.o
BINDIR=$(DESTDIR)/usr/bin
all:$(OBJS)
$(CC) -o $(TARGET) $(OBJS)
install:
mkdir $(BINDIR)
cp $(TARGET) $(BINDIR)
clean:
rm -f *.o hello
.PHONY:all clean
第一个修改是为了在build包的时候能够把需要的文件安装到正确的目录,从而正确的包含在生成的deb包中。
第二个修改是因为修改后的BINDIR变量的目录并不存在,所以需要手动创建。
8. 然后我们要看一下debian这个生成的目录了
这个目录下面的文件很多,不能一一解释。这里列举几个重要的,也是绝大部分软件必须的:
- control文件: 声明很多重要的变量,dpkg通过这些变量来管理软件包
- copyright文件: 不用说,版权信息,相当重要
- changelog文件: 这是一个必需文件,包含软件版本号,修订号,发行版和优先级。
- rules文件: 这实际上是另外一个Makefile脚本,用来给dpkg-buildpackage用的.
- compat文件: 这个文件留着是有用的
- dirs文件:这个文件指出我们需要的但是在缺省情况下不会自动创建的目录
9.所有的准备工作都就绪了。我们可以build软件包。dpkg-buildpackage -rfakeroot
10. 创建完成后,在该目录的上级目录应该得到如下几个文件:
- hellodeb_1.0-1.tar.gz: 源码包
- hellodeb_1.0-1.dsc: 源代码总结,根据control文件创建,包含GPG签名
- hellodeb_1.0-1_solaris-i386.deb: 完整的二进制包,可用dpkg管理
- hellodeb_1.0-1_solaris-i386.changes: 供dput使用