Debian、Ubuntu系列linux操作系统制作安装包相较于CentOS更简便一些,如“dpkg -b”指令即可重新打包。如果需要源码级制作安装包则更困难一些,接下来,我们逐步分析Debian、Ubuntu源码编译制作安装包的步骤。



章节预览:

1. 生成源码文件夹2. 修改control文件
3. 修改rules文件
4. 生成安装包

章节内容:



1. 生成源码文件夹

  首先我们准备一个可以编译通过的源码包,如openssl-1.1.1k.tar.gz,可从https://www.openssl.org(官方网站)中下载。

  接下来创建一个文件夹,把源码包拷贝进来,参考图1:

HAproxy ubuntu源码安装 ubuntu源码包_HAproxy ubuntu源码安装




  在控制台中输入 debmake -a openssl-1.1.1k.tar.gz,参考图2:

HAproxy ubuntu源码安装 ubuntu源码包_Debian、Ubuntu源码_02




  现在我们得到openssl-1.1.1k和openssl_1.1.1k.orig.tar.gz(openssl-1.1.1k.tar.gz的软连接),进入openssl-1.1.1k文件夹,参考图3、图4:

HAproxy ubuntu源码安装 ubuntu源码包_安装包_03




HAproxy ubuntu源码安装 ubuntu源码包_Debian、Ubuntu源码_04




2. 修改control文件

  进入debian文件夹,打开control文件,参考图5:

HAproxy ubuntu源码安装 ubuntu源码包_安装包_05




  control文件中的内容:

Source: openssl 				 //源码包名称
	Section: unknown        		 //程序的类别,常见的有utils, net, mail, text, devel等
	Priority: optional      		 //程序对于系统的重要程度,如required, standard, optional, extra等
	Maintainer: test     			 //包的制作者,联系信息等
	Build-Depends: debhelper (>=11~) //构建版本
	Homepage: https://www.test.com   //主页
	
	Package: openssl       		     //包的安装名称,查询或卸载包的时候使用
	Architecture: any     			 //包所支持的架构,编译后自动转换为amd64、arm64等,amd64可在x86_64等架构使用,arm64可在arch64等架构使用等,应根据实际架构填写
	Multi-Arch: foreign
	Depends:                		//所依赖的其他包和库文件,如果是依赖多个包和库文件,采用逗号隔开
	Description: test 		        //包的相关描述

  简单的control文件包括如下内容:

Source: openssl
	Section: unknown
	Priority: optional
	Maintainer: test
	Standards-Version: 1.1.1
	
	Package: openssl
	Architecture: any
	Multi-Arch: foreign
	Description: test



3. 修改rules文件

  打开rules文件,参考图6:

HAproxy ubuntu源码安装 ubuntu源码包_制作安装包_06




  rules文件修改如下:

#!/usr/bin/make -f
# You must remove unused comment lines for the released package.
#export DH_VERBOSE = 1
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
#export DEB_CFLAGS_MAINT_APPEND  = -Wall -pedantic
#export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed

%:
	dh $@

override_dh_auto_configure:
	./config

override_dh_auto_clean:
	dh_auto_clean

override_dh_auto_install: 
	dh_auto_install 

override_dh_auto_modules:
	dh_auto_modules

override_dh_auto_build:   
	dh_auto_build

override_dh_usrlocal:

  其中
    override_dh_auto_configure
    生成配置文件,需要按照源码生成方式写入,如增加–prefix=/usr 等等,./configure --prefix=/usr

    override_dh_auto_clean
    清除编译缓存文件

    override_dh_auto_install
    编译完成后的安装

    override_dh_auto_build
    编译源码

    override_dh_usrlocal
    编译过程中遇到dh_usrlocal相关错误,用来跳过这一步、



4. 生成安装包

  准备工作完成了,现在我们回到debian上一级目录(openssl-1.1.1k),控制台中输入 dpkg-buildpackage,参考图7:

HAproxy ubuntu源码安装 ubuntu源码包_安装包_07



  指令执行完成并且没有报错时,回到首次创建的目录(源码包同级目录),到这里完整的制作流程完成了,参考图8:

HAproxy ubuntu源码安装 ubuntu源码包_HAproxy ubuntu源码安装_08




  现在我们生成了deb安装包和deb制作包、文件,之后可以通过修改制作包中的内容(如增加自定义文件)重新生成deb安装包。

  后续文章讲解制作包中增加自定义文件方式,及常见问题跳过等内容。