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

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

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

apt source 方式

actionchen@actionchen-PC:~/deb-test$ apt source wget
正在读取软件包列表... 完成
需要下载 4,455 kB 的源代码包。
获取:1 https://professional-packages.chinauos.com/desktop-professional eagle/main wget 1.20.1-1.1 (dsc) [1,054 B]
获取:2 https://professional-packages.chinauos.com/desktop-professional eagle/main wget 1.20.1-1.1 (tar) [4,393 kB]
获取:3 https://professional-packages.chinauos.com/desktop-professional eagle/main wget 1.20.1-1.1 (diff) [60.9 kB]
已下载 4,455 kB,耗时 1(3,430 kB/s)
dpkg-source: info: extracting wget in wget-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$ ls
wget-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 -u http://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  Speed
100  1695  100  1695    0     0  45810      0 --:--:-- --:--:-- --:--:-- 45810
dget: 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  Speed
100  431k  100  431k    0     0  3624k      0 --:--:-- --:--:-- --:--:-- 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  Speed
100  6720  100  6720    0     0   142k      0 --:--:-- --:--:-- --:--:--  142k
dpkg-source: info: extracting wfuzz in wfuzz-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$ ls
wfuzz-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 编译
    注意:debuild需要进入到解压后的目录运行,然后编译好的deb包会在上一级目录
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会报错,需要删除掉,这是用来处理补丁的,需要原始软件源码压缩包,但实际我们已经下载的源码不需要。所以删掉让他略过这个过程。
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
debDebian Linux系统中的软件格式,用于将软件打以供安装和管理。deb有以下三种方法: 1. 手动打:这是最基本和传统的打方法。它要求开发者手动创建一个debian目录,并在其中定义软件的各种信息,如名、版本、依赖关系等。然后使用dpkg-deb命令将整个软件目录打deb文件。这种方法灵活但繁琐,需要对deb的结构和原理有一定的了解。 2. 使用dpkg工具打:dpkg是Debian系统中管理软件的核心工具之一。它含了一系列的命令,其中括dpkg-buildpackage,用于将源代码打deb文件。使用此方法,开发者只需要在源代码目录中创建一个debian目录,并在其中定义软件的各种信息,然后运行dpkg-buildpackage命令即可自动生成deb文件。与手动打相比,这种方法更快速和便捷。 3. 使用打工具:为了简化deb的过程,社区开发了一些打工具,如Debhelper、CDBS和Quilt等。这些工具提供了一系列的自动化脚本和规则,使用者只需要编写一个简单的配置文件,并遵循一定的约定,即可轻松地将软件源代码打deb文件。这种方法适用于打复杂的软件,能够提高打的效率和一致性。 总的来说,deb有手动打、使用dpkg工具打和使用打工具三种方法。开发者可以根据自己的需求和熟悉程度选择适合的打方法,以方便地创建并发布自己的软件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值