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:

图1 放置源码包

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

图2 生成安装包文件夹指令

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

图3 生成安装包文件夹

图4 进入安装包文件夹

2. 修改control文件

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

图5 control文件

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: foreignDepends:                     //所依赖的其他包和库文件,如果是依赖多个包和库文件,采用逗号隔开Description: test                //包的相关描述

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

 Source: opensslSection: unknownPriority: optionalMaintainer: testStandards-Version: 1.1.1Package: opensslArchitecture: anyMulti-Arch: foreignDescription: test

3. 修改rules文件

打开rules文件,参考图6:

图6 rules文件

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:./configoverride_dh_auto_clean:dh_auto_cleanoverride_dh_auto_install: dh_auto_install override_dh_auto_modules:dh_auto_modulesoverride_dh_auto_build:   dh_auto_buildoverride_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:

图7 生成安装包

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

图8 安装包及相关文件

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

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

Debian、Ubuntu源码编译制作安装包(一)相关推荐

  1. Debian、Ubuntu源码编译制作安装包(二)

    在<Debian.Ubuntu源码编译制作安装包(一)>文章中描述了dpkg基本制作安装包过程,本篇文章描述如何增加patch及解决出错问题. 章节预览: 5. 增加patch 6. 修改 ...

  2. debian源码编译安装mysql5.6_MySQL 5.6 Linux Debian/Ubuntu源码编译安装 LNMP之MySQL

    安装所需依赖和工具apt-get install make gcc g++ libncurses5-dev cmake bison 配置cmake编译参数cmake . -DCMAKE_INSTALL ...

  3. 模仿qq客户端应用源码且带安装包

    这款源码案例是模仿qq客户端应用源码且带安装包,大家可以参考一下吧,也是比较完整的一款Android源码项目. 源码下载: http://code.662p.com/view/1931.html 00 ...

  4. linux下源码安装vim,ubuntu 源码编译安装最新的vim 8.0

    为什么要源码编译安装VIM? 因为我要安装ycm,但是ubuntu14.04仓库vim版本低 教程步骤: 1, 核对系统版本 2, 删除系统自带的vim 3, 编译安装vim 4, 检验vim的安装 ...

  5. ubuntu 源码编译libtorch

    ## pytorch/libtorch qq群: 1041467052 有一点儿感悟就是: 一定要去官网找一手资料,百度出来的都是个人根据官网来的,这个就随便看看了. 官网:https://githu ...

  6. git安装 perl ubuntu_【Git】Linux Ubuntu——源码编译安装Git 2.x 版本

    Git是一个开源的分布式版本控制系统,可以有效,高速的处理从很小到非常大的项目版本管理.Git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持. ...

  7. Ubuntu源码编译安装开源飞信OpenFetion

    基于 GTK2 的开源飞信最近发布了 1.8 版本,添加飞信群支持.本次 1.8 版本有如下更新: 添加了飞信群功能 添加了桌面位置记忆功能 修复了内存溢出等段错误 减小了大图标模式的图标尺寸 更换了 ...

  8. Ubuntu源码编译安装PCL

    ubuntu上可以通过命令apt install libpcl-dev安装PCL,但是一般版本都比较老,所以我喜欢下载最新的代码然后编译安装 步骤如下: 安装依赖以及第三方库:Boost,Eigen, ...

  9. php编译安装memcache,ubuntu源码编译安装memcached和php-memcache 扩展

    1.编译前,先确认gcc.make.patch等编译工具是否已安装,并可正常使用. 2.Libevent是一个异步事件处理软件函式库,以BSD许可证释出.Memcached  依赖Libevent,因 ...

最新文章

  1. NLP-基础知识-004(生成模型)
  2. Selenium 功能总结大集合
  3. 【AI视野·今日Robot 机器人论文速览 第十七期】Thu, 1 Jul 2021
  4. Python快速使用jira模块调用Jira接口
  5. 树莓派桌面没有时间_树莓派3B/3B+开启手机远程桌面和终端,没有屏幕和电脑的伙伴们有福啦!...
  6. android点击按钮修改文本,如何在android中每3秒动态更改按钮文本?
  7. miniprogrampatch 提供 watch 和 computed 特性
  8. APP性能测试之jmeter
  9. 以个性化为需求如何选择ITSM系统?
  10. windows 多开微信
  11. 勒索病毒解密SQL数据库修复文档文件服务器中毒远程处理数据恢
  12. Handlebars 小技巧
  13. go 库 viper 配置解析神器
  14. 微信小程序电商实战-首页(上)
  15. 罗克韦尔ABSourceKeyTools工具制作
  16. http协议及http协议和tcp协议的区别
  17. 构造函数、深拷贝、浅拷贝
  18. php实现贴吧功能,贴吧/盖楼的技术实现(PHP)
  19. 剑指Offer JZ45 扑克牌顺子(Java)
  20. 信创政务文档云平台助力数据互联互通,加快电子政务建设

热门文章

  1. Linus:我们都老了,但Linux维护后继无人
  2. 面试官:换人!他连进程线程协程这几个特点都说不出
  3. 漫画:云市场下,运营商甲方爸爸也出来抢乙方生意了?
  4. callablestatement存储过程
  5. oracle 数据库备份
  6. GitHub直接查看HTML【项目网站一种制作方法】
  7. ubuntu下手动安装jdk6
  8. JavaScript六种继承方式的递进推演
  9. canvas 粒子效果 - 手残实践纪录
  10. JSON_dump和load