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:
在控制台中输入 debmake -a openssl-1.1.1k.tar.gz,参考图2:
现在我们得到openssl-1.1.1k和openssl_1.1.1k.orig.tar.gz(openssl-1.1.1k.tar.gz的软连接),进入openssl-1.1.1k文件夹,参考图3、图4:
2. 修改control文件
进入debian文件夹,打开control文件,参考图5:
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:
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:
指令执行完成并且没有报错时,回到首次创建的目录(源码包同级目录),到这里完整的制作流程完成了,参考图8:
现在我们生成了deb安装包和deb制作包、文件,之后可以通过修改制作包中的内容(如增加自定义文件)重新生成deb安装包。
后续文章讲解制作包中增加自定义文件方式,及常见问题跳过等内容。