前些天,杜比版主在论坛里提出了定制社区版debian的计划,并在群里分享了对“自动构建网络”的想法
我通过构建cmake的例子,体验了一下这个流程,现在此分享一下自己的理解。这个过程主要使用dpkg-buildpackage软件,它集编译打包为一体,不影响本机的软件环境,极大地简化了操作。具体步骤如下:
查询待编译的包(没试过):在gitlab.loongarch.org的服务器里,存着一个包含各包编译状态的数据库。在这里可以认领需要编译的包。
获取源码:使用apt获取。首先要向apt的sources.list里添加指定的镜像源,然后在工作目录里使用apt source+包名
即可获得源码。工作目录中出现了一个文件夹和三个文件,其中需要操作的只有那个文件夹,这个文件夹内存放着源码。
补全依赖:在当前目录下运行sudo apt build-dep+包名
。
开始编译:进入那个文件夹,运行dpkg-buildpackage -uc -us 2>&1 | tee ../build.log
即可开始编译,并向上级目录保存一个log文件。
打上补丁(如果编译失败):
(1)如果能够找到一个别人做好的补丁,请将它放在工作目录,并在工作目录中运行如下代码:
cp -v 补丁名 源码文件夹/debian/patches
echo 补丁名 >> 源码文件夹/debian/series
cd 源码文件夹
dpkg-source -b .
(2)如果找不到补丁,那就要对源码进行修改,并自制对应的补丁。请注意,这里的补丁需要使用专门的工具构建,使用diff命令做的无法工作!
(2.1)修改源码
(2.2)运行以下代码,保存更改并制作补丁。中间会弹出一个文本编辑器窗口展示补丁,可以在这里另存。补丁会被存在源码文件夹/debian/patches
内,待编译完成后,还会被添加到工作目录的.debian压缩文件内
dpkg-source --commit
(2.3)再次编译,直到成功
上传结果(没试过):编译结束后会获得相应的.deb文件,和一个添加了新的补丁的.debian压缩文件。把它们传回gitlab,数据库会自动调整这个包的状态。
进行测试(没试过):其他人可以下载这个包,进行测试。