Debian、Ubuntu源码编译制作安装包(二)
在<Debian、Ubuntu源码编译制作安装包(一)>文章中描述了dpkg基本制作安装包过程,本篇文章描述如何增加patch及解决出错问题。
章节预览:
5. 增加patch
6. 修改/跳过编译项
7. 错误解决
8. rpm源码包在Debian系列系统编译
目录预览
章节内容:
5. 增加patch
Debian系列系统制作或增加patch较为简单,即可以通过diff -Naur等指令制作patch,也可以直接修改源码,执行dpkg-buildpackage指定patch名称方式生成并增加patch。
patch存在的路径在debian/patches/,放入patch文件并在series文件中追加patch名称即可。
下面演示直接修改源码生成patch,进入openssl-1.1.1k文件夹并打开config:
图9 修改config文件
参考图9,我们在config文件中注释"-h This help."这一行,保存并退出文件。 接下来,在控制台中输入dpkg-buildpackage:
图10 上游更改
参考图10,根据提示在控制台中输入dpkg-source --commit,然后输入patch名称(如"test.patch"),按回车键后选择编辑器,选择"2. /usr/bin/vim.basic"即可,然后保存退出编辑器:
图11 生成并增加patch
现在patch已经生成并自动追加入series文件,接下来,在控制台中输入dpkg-buildpackage:
图12 生成deb安装包
编译完成,生成deb安装包。
6. 修改/跳过编译项
编译较为复杂的项目会遇到"测试失败"、"debug生成失败"等问题,这些问题一般不影响功能的实用性,可以通过修改编译项进行跳过。
打开debian/rules文件:
图13 默认rules文件
参考图13,使用默认rules文件编译过程可能会遇到一些问题,如执行./configure时参数不完整,控制台中会显示停止在dh_auto_configure,参考下图:
图14 停止在dh_auto_configure
这里我们可以通过在rules文件增加override_auto_configure及执行内容解决问题:
图15 增加dh_auto_configure及内容
实际编译过程中,我们可以通过停止时的编译信息判断出具体出错项,如dh_auto_make,可以通过override + _ + dh_auto_make组成make的重写项,之后编译将执行这部分内容。部分不重要的编译项,如test、debug等,可以通过定义编译项不实现内容,达到跳过效果:
override_auto_test:
7. 错误解决
编译过的源码会生成部分临时文件,若对源码某部分修改需要删除这些临时文件后才能再次编译。
1. 根目录下临时文件一般以.开头,如.Version,编译失败时可以删除这个文件再次尝试编译;还有一些.开头的二进制文件,这些随项目生成,出错时排查一下.隐藏文件即可。
2. debian/changelog文件也会出现导致源码编译失败的情况:
图16 changelog
changelog文件中的版本信息需要与压缩包一致,如压缩包命名为test_1.16.0-1.tar.gz,changelog文件中的版本需要是(1.16.0-1),版本不相同则会出错。
3. 当编译过的源码移植到别的机器编译时,需要注意一下debian/source/format文件。由于不同的机器quilt版本可能不同,在一个新机器编译之前,应先删除debian/source/format文件。
8. rpm源码包在Debian系列系统编译
rpm源码包在Debian系列系统有两种编译方式:
方式一:
1. 通过rpm2cpio解决****.src.rpm,找到压缩包和patch文件;
2. 使用debmake -a 压缩包,生成源码文件夹;
3. 把所有patch文件拷贝到源码文件夹的debian/patches 内,并追加所有patch名称到series内;
4. 根据rpmbuild的编译规则(编译参数)写入debian/rules内,如增加override_auto_configure、override_auto_make等等;
5. 结合override_跳过部分可忽略编译项(根据编译情况来定);
方式二:
这个方案主要针对patch文件比较多,并且dpkg编译不通过的情况下。
1. 在rpm系列系统中,执行rpmbuild -bp *****.spec,生成完整源码文件夹;
2. 压缩源码文件夹,注意版本号要一致;
3. 拷贝压缩包到dpkg系列系统,并执行debmake -a 压缩包,生成源码文件夹;
4. 根据rpmbuild的编译规则(编译参数)写入debian/rules内,如增加override_auto_configure、override_auto_make等等;
5. 结合override_跳过部分可忽略编译项(根据编译情况来定);
目录预览
<Debian、Ubuntu源码编译制作安装包(一)>
Debian、Ubuntu源码编译制作安装包(二)相关推荐
- Debian、Ubuntu源码编译制作安装包(一)
Debian.Ubuntu系列linux操作系统制作安装包相较于CentOS更简便一些,如"dpkg -b"指令即可重新打包.如果需要源码级制作安装包则更困难一些,接下来,我们逐步 ...
- 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 ...
- 模仿qq客户端应用源码且带安装包
这款源码案例是模仿qq客户端应用源码且带安装包,大家可以参考一下吧,也是比较完整的一款Android源码项目. 源码下载: http://code.662p.com/view/1931.html 00 ...
- linux下源码安装vim,ubuntu 源码编译安装最新的vim 8.0
为什么要源码编译安装VIM? 因为我要安装ycm,但是ubuntu14.04仓库vim版本低 教程步骤: 1, 核对系统版本 2, 删除系统自带的vim 3, 编译安装vim 4, 检验vim的安装 ...
- ubuntu 源码编译libtorch
## pytorch/libtorch qq群: 1041467052 有一点儿感悟就是: 一定要去官网找一手资料,百度出来的都是个人根据官网来的,这个就随便看看了. 官网:https://githu ...
- git安装 perl ubuntu_【Git】Linux Ubuntu——源码编译安装Git 2.x 版本
Git是一个开源的分布式版本控制系统,可以有效,高速的处理从很小到非常大的项目版本管理.Git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持. ...
- Ubuntu源码编译安装开源飞信OpenFetion
基于 GTK2 的开源飞信最近发布了 1.8 版本,添加飞信群支持.本次 1.8 版本有如下更新: 添加了飞信群功能 添加了桌面位置记忆功能 修复了内存溢出等段错误 减小了大图标模式的图标尺寸 更换了 ...
- Ubuntu源码编译安装PCL
ubuntu上可以通过命令apt install libpcl-dev安装PCL,但是一般版本都比较老,所以我喜欢下载最新的代码然后编译安装 步骤如下: 安装依赖以及第三方库:Boost,Eigen, ...
- php编译安装memcache,ubuntu源码编译安装memcached和php-memcache 扩展
1.编译前,先确认gcc.make.patch等编译工具是否已安装,并可正常使用. 2.Libevent是一个异步事件处理软件函式库,以BSD许可证释出.Memcached 依赖Libevent,因 ...
最新文章
- supervisord+supervisorclusterctl+supervisord-monit
- C#_细说Cookie_Json Helper_Cookies封装
- vue插槽面试题_关于前端Vue框架的面试题,面试官可能会问到哪些。?
- python 面试宝典--集各家之所长,乱七八糟于一体
- PID控制器开发笔记之四:梯形积分PID控制器的实现
- arcgis xml 下载 切片_xml格式文件如何用arcgis进行编辑和更新
- ruby mysql 驱动_windows下Rails安装MySql驱动的配置
- concurrent包下的Exchanger练习
- vue限制只能输入数字_vue的input中,如何限制只能输入number
- ubuntu 文件及子文件夹的权限的查看及修改
- flowable工作流 流程变量_信也科技工作流平台的技术实践
- 想创业怕失败就不要轻易选择去创业
- Tomcat 映射虚拟目录
- Apache Flink Meetup · 北京站,1.13 新版本 x 互娱实践分享的开发者盛筵!
- 知识变现 常用课程制作实用工具大全(建议保存)
- 简单力场护盾效果ASE实现笔记
- mac清空废纸篓怎么恢复?
- 不用代码免费采集网站内容_看一遍就能上手的火车头采集图文全流程教程
- 三维视觉 | 03 MATLAB 单、双目相机标定
- 03.奇特的一生(笔记)