当前位置: 首页 > news >正文

从源码构建deb包的两种方式

直接从debian/ubuntu/deepin/uos 这类已有debian化源码构建

  1. 开启系统的src源,或者手工浏览系统的源目录,使用apt source xxx 或者dget来获取debian化的源码。

apt source 方式

actionchen@actionchen-PC:~/deb-test$aptsourcewget正在读取软件包列表... 完成 需要下载4,455kB 的源代码包。 获取:1 https://professional-packages.chinauos.com/desktop-professional eagle/mainwget1.20.1-1.1(dsc)[1,054B]获取:2 https://professional-packages.chinauos.com/desktop-professional eagle/mainwget1.20.1-1.1(tar)[4,393kB]获取:3 https://professional-packages.chinauos.com/desktop-professional eagle/mainwget1.20.1-1.1(diff)[60.9kB]已下载4,455kB,耗时1(3,430kB/s)dpkg-source: info: extractingwgetinwget-1.20.1 dpkg-source: info: unpacking wget_1.20.1.orig.tar.gz dpkg-source: info: unpacking wget_1.20.1-1.1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying wget-doc-remove-usr-local-in-sample.wgetrc dpkg-source: info: applying wget-doc-remove-usr-local-in-wget.texi dpkg-source: info: applying wget-passive_ftp-default dpkg-source: info: applying Fix-a-buffer-overflow-vulnerability.patch actionchen@actionchen-PC:~/deb-test$lswget-1.20.1 wget_1.20.1-1.1.debian.tar.xz wget_1.20.1-1.1.dsc wget_1.20.1.orig.tar.gz

使用dget 方式获取

actionchen@actionchen-PC:~/deb-test$ dget-uhttp://mirrors.aliyun.com/debian/pool/main/w/wfuzz/wfuzz_3.1.0-1.dsc dget: retrieving http://mirrors.aliyun.com/debian/pool/main/w/wfuzz/wfuzz_3.1.0-1.dsc % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed1001695100169500458100--:--:-- --:--:-- --:--:--45810dget: retrieving http://mirrors.aliyun.com/debian/pool/main/w/wfuzz/wfuzz_3.1.0.orig.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100431k100431k003624k0--:--:-- --:--:-- --:--:-- 3624k dget: retrieving http://mirrors.aliyun.com/debian/pool/main/w/wfuzz/wfuzz_3.1.0-1.debian.tar.xz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed1006720100672000142k0--:--:-- --:--:-- --:--:-- 142k dpkg-source: info: extracting wfuzzinwfuzz-3.1.0 dpkg-source: info: unpacking wfuzz_3.1.0.orig.tar.gz dpkg-source: info: unpacking wfuzz_3.1.0-1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying fix-header-script.patch dpkg-source: info: applying switch-to-python3.patch dpkg-source: info: applying add-sys-path-append dpkg-source: info: applying upgrade-doc-installation.patch actionchen@actionchen-PC:~/deb-test$lswfuzz-3.1.0 wfuzz_3.1.0-1.debian.tar.xz wfuzz_3.1.0-1.dsc wfuzz_3.1.0.orig.tar.gz
  1. 获取到源码后,先保证编译依赖是否满足,如果不满足,用sudo apt-get build-dep wget来自动安装编译源码包需要的依赖包,然后直接用debuild -us -uc 编译(如果只编译二进制,跟-b参数,可以参考dpkg-buildpackage的man)
    注意:debuild需要进入到解压后的目录运行,然后编译好的deb包会在上一级目录,如果删掉了源码目录,可以再次运行dpkg-source -x ./wget_1.20.1-1.1.dsc来重新解压源码。
actionchen@actionchen-PC:~/deb-test/wget-1.20.1$ debuild-us-uc^C actionchen@actionchen-PC:~/deb-test/wget-1.20.1$ls../ wget-1.20.1 wget_1.20.1-1.1_amd64.deb wget-dbgsym_1.20.1-1.1_amd64.deb wget_1.20.1-1.1_amd64.build wget_1.20.1-1.1.debian.tar.xz wget-udeb_1.20.1-1.1_amd64.udeb wget_1.20.1-1.1_amd64.buildinfo wget_1.20.1-1.1.dsc wget_1.20.1-1.1_amd64.changes wget_1.20.1.orig.tar.gz

标题从裸源码编译的过程

  1. 从软件官网或者git服务器checkout下来
  2. 进入到源码目录 dh_make --createorig ,将源码debian化
  3. 修改debian/control 文件,软件包的名称依赖以及编译依赖描述等等都在这里了
  4. 修改changelog ,dhc -e ,这个也是比较重要的文件,软件debian-revision版本也在这里面了
  5. 修改debian/rules这个文件其实就是Makefile,功能就是编译,安装到fakeroot,完成打包这个过程, 把传统的编译安装3件套configure&&make&&make install ,或者cmake ninja之类的命令放进去就好了。编译完成安装,安装的fake根目录就在源码路径的debian目录下,当然make目标最后还需要把dh_builddeb这些dh——helper的套件命令放进去,这样编译完成后才会自动完成打包过程,完成后会在源码的上一级目录生成deb二进制文件。
  6. 在源码目录使用debuild -uc -us进行编译打包过程。
  7. debuild 会先调用dpkg-buildpackage,然后运行lintian检查包是否符合debian规范,最后会做包签名。 debian 的简易打包指南说,dpkg-buildpackage会调用binary这个目标来开始编译,所以rules文件里应该是必须要包涵binary这个目标的。
  8. 这几个步骤其实主要是修改control,rules,changelog,尤其是rules。其余的一些很多功能还是需要进一步扩展看文档的。(rules里面cd那一行命令结束后会自动回到cd前的目录,所以如果在Makefile里面要想cd 到某个目录做什么,只能连着写一行)
  9. debian这个玩意儿实在是历史太悠久了,以至于不管是打包还是安装包以及做在线源,都有好几种不通的方法。对没接触过的人来说绝对晕菜。
    10.要想省事,就直接用人家写好的文件或者甚至官网的src库里的源码来修改,这样基本等于白嫖,你只需要修改你想改的部分或者软件源代码。
    11 对于check下来的源码目录debian/source/有format文件的情况,打包过程 dpkg-source会报错,需要删除掉,这是用来处理补丁的,需要原始软件源码压缩包,但实际我们已经下载的源码不需要。所以删掉让他略过这个过程。
http://www.cnnetsun.cn/news/3705986.html

相关文章:

  • 小企业做GEO优化要准备什么?广拓时代梳理AI获客基础资料
  • STM32与SE050安全芯片的物联网设备安全方案
  • GraphRAG又一新作,HyGRL可太强了
  • 物联网安全元件SE050开发实战与性能优化
  • 「科研记录」mathtype实现Word公式居中、序号右对齐的方法
  • 思源宋体TTF:7款免费中文字体的终极完整使用指南
  • Keepalived+HAPROXY高可用集群实战指南
  • 知医邦经济学:医改视野下的“院外健康供给“范本
  • REFramework深度解析:技术架构优化与《街霸6》在线对战软锁修复方案
  • 如何用raylib在5分钟内创建你的第一个跨平台游戏?终极入门指南
  • 7大核心组件解析:SOC-OpenSource如何构建完整安全运营中心
  • 操作系统页缓存与Dentry缓存原理及实战:高并发场景下的隐形性能加速器
  • 天冬酰胺合成酶活性检测:奈氏试剂比色法在氮代谢研究中的经典应用
  • Glance镜像服务的基本使用
  • NBM7100A芯片在低功耗物联网设备中的优化应用
  • WebRTC实时通信原理与Java/Vue实现详解
  • bq27510EVM电量计评估实战:从硬件解析到软件配置的完整指南
  • TranslucentTB终极指南:如何免费打造Windows任务栏透明特效
  • 终极指南:如何用LinkSwift一键获取9大网盘真实下载链接
  • H-ui响应式设计技巧:让你的网页在各种设备上完美展示
  • 大语言模型性格测试:SBTI框架下的AI特质分析
  • 鸣潮工具箱完整指南:免费一键优化游戏性能与数据管理
  • 基于ESP32与多传感器融合的自行车智能安全预警系统设计与实现
  • Video2X:免费AI视频放大与帧率提升的终极指南
  • Java RAG集成实战:从原理到性能优化的全流程解析
  • 超构透镜技术:光学设计的革命与应用
  • 物联网设备低功耗优化:NBM7100A与STM32L031电源管理实战
  • 调液晶屏驱动怎么改延时屏幕都没反应?很多人忽略电源这个关键点
  • connect 断线重连
  • ZXPInstaller终极指南:如何用3步轻松安装Adobe插件