`
xumingyong
  • 浏览: 184085 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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

 
阅读更多



我希望从零开始制作出一个自己的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包文件及其他相关文件就生成了---但是生成于源码目录的父目录中。

分享到:
评论

相关推荐

    deb包制作+软件图标+加到系统菜单实例

    本实例将带你深入了解如何制作DEB包、添加软件图标以及将其集成到系统菜单中。我们将涉及以下几个关键概念和技术: 1. **DEB包制作**:DEB包是Linux软件的二进制安装包,包含程序的可执行文件、库、配置文件等。...

    用dpkg命令制作deb包1

    "用dpkg命令制作deb包1" Deb包简介: Deb包是Debian Linux发行版中使用的一种软件包格式, Deb包由两部分组成:数据archives和控制信息archives。数据archives存储了软件的实际文件,而控制信息archives则存储了...

    制作deb包的三种方法

    制作deb包的三种方法_Ralph的空间制作deb包的三种方法_Ralph的空间制作deb包的三种方法_Ralph的空间

    QT程序打包成deb文件的一个目录结构,放这里用来备忘,前面有打包成deb的文章

    QT程序打包成DEB文件是将Qt应用程序转化为适用于Debian系Linux系统(如Ubuntu、...总的来说,QT程序打包成DEB文件是一项涉及多步骤和细节的任务,但一旦熟悉了流程,就能有效地将应用程序分发给Debian家族的Linux用户。

    ubuntu操作系统的Deb包制作过程

    这一步非常重要,因为它为Deb包提供了一个清晰的结构。 ``` mkdir package cd package ``` ##### 2. 复制安装文件 将需要安装的文件复制到新创建的目录中,并按照安装后这些文件在系统中的绝对路径进行组织。例如...

    deb包制作与安装.doc

    #### 一、deb包制作流程 ##### 1. deb包命名规则 - **格式**: `包名_版本号-修订号_支持平台.deb` - 示例: `wt-ezsdk-dm8168_5.02.01.59-1_i386.deb` - `wt-ezsdk-dm8168`: 包名 - `5.02.01.59-1`: 版本号-修订...

    ubuntu deb包制作

    假设我们要制作一个名为`gwrite`的软件的DEB包。 1. **下载源码** - 下载软件的源代码tarball,例如从官方网站下载`gwrite-0.5.0.tar.gz`。 2. **创建工作目录** - 在主目录下创建一个新的目录,例如`packaging`...

    Deb安装包的制作方法

    接着,复制项目以创建一个工作副本,后续操作都在副本上进行。 - 将复制的源代码目录重命名为符合Deb标准的格式,如`[package-name]-[version]`,例如`foobar-0.1.0`。 - 如果项目包含配置文件,应将它们组织到源...

    checkinstall方法制作deb 包1

    通过以上步骤,我们成功地使用`checkinstall`创建了一个DEB包,并且进行了定制化的配置,使得安装过程更加符合我们的需求。这种方法对于系统管理员和开发者来说非常有用,因为DEB包可以方便地分发、安装和管理,同时...

    Linux deb安装包例子,包含制作一个deb安装包需要的相关文件

    3. **配置和规则**:在`DEBIAN`目录下,你可能还需要一个`conffiles`文件(如果软件有需要保留的配置文件),以及一个`rules`文件,这是一个Makefile,定义了构建过程的规则。 4. **编译和打包**:使用`dpkg-build...

    Ubuntu下的deb包制作详解

    只有这样,才能制作出一个完整的 deb 包,并将其安装到应用程序菜单中。 deb 包的制作和使用对软件开发和linux 系统管理都是非常重要的。 Deb 包的制作需要了解 deb 包的结构和文件格式,并且需要了解安装和卸载时...

    ubuntu wine.deb 包

    ubuntu wine.deb 包

    deb包的2种安装安装方法

    - **dpkg**:dpkg是Debian Package Manager的缩写,它是Debian及其衍生系统中的一个低级包管理工具。dpkg主要用于处理.deb文件的安装、卸载、验证等工作。 - **deb包**:deb包是一种软件包格式,包含了程序文件、...

    Linux SecureCRT deb包

    Linux deb包的SecureCRT软件

    离线安装mysql所用的deb整合包

    描述中提到的"内含编译所需包"可能是指在安装过程中需要的编译工具和其他构建依赖,比如`gcc_g++`,这是一个包含GCC C++编译器的DEB包,用于编译MySQL源代码或解决其他依赖项的编译需求。 2. **理解安装顺序**:...

    ubuntu 微信的deb包

    ubuntu 微信的deb包,ubuntu20.04 已经安装测试成功 sudo dpkg -i weixin_2.1.1_amd64.deb

    mysql-8.0-deb包

    注:***少了一个deb,链接:https://pan.baidu.com/s/12_4OIt4XJBpP1i76BXpLTA 提取码:e48g 。 MySQL的deb包,包括mysql核心文件和依赖文件,共10个deb包。

    linux 下gitlab客户端安装文件 deb包下载和使用

    在Linux环境中,GitLab是一个广泛使用的版本控制系统,它提供了便捷的代码管理、协作以及持续集成/持续部署(CI/CD)功能。为了在Linux系统上安装GitLab客户端,我们需要下载适用于该系统的安装包,通常为.deb格式,...

    mysql8全部deb包及依赖包-Ubuntu18版.zip

    Ubuntu 18.04(Bionic Beaver)是一个长期支持(LTS)版本的操作系统,为开发者和用户提供稳定、安全的环境。这个“mysql8全部deb包及依赖包-Ubuntu18版.zip”压缩包是为了在Ubuntu 18.04系统上顺利安装MySQL 8而...

    deb包制作调研

    deb包制作的调研文档,详细描述了rules规则的编写方法,和deb包的制作过程

Global site tag (gtag.js) - Google Analytics