由于 Linux 发行版的包管理器一般不会使用最新版的软件,或有需要对软件源码进行修改后再编译,并通过 deb 包的形式进行安装以统一对软件进行管理。如果直接从源代码编译,则需要学习 Debian 打包规则并进行较为复杂的打包程序。
本文介绍了一种从 Debian Git 仓库获取源代码并编译的方式。该仓库的源代码已包含软件本身及打包信息,并可以通过简单的命令完成编译和打包。这有助于新手或不想详细了解 Debian 打包过程的人快速创建某个软件的 Debian 包,降低了学习 Debian 软件打包的难度,并能通过进行实际操作对 Debian 的打包过程有更好的体验。
本文所述方法不仅适用于 PHP,也能类推到其他软件。Debian 包可在所有 Debian 系 Linux 发行版(如 Ubuntu)上进行编译、打包和安装。
本文所述编译、打包环境为 Windows Subsystem For Linux (WSL) Ubuntu 20.04 LTS,安装、测试环境为 Ubuntu Server 20.04.1 LTS。
获取源代码
Debian Salsa 上储存了带有打包信息的源代码。PHP 源码位于 https://salsa.debian.org/php-team/php。
要获取带有打包信息的源代码,需要选择带有 upstream
的 Git 分支。在编译机器上下载该源代码仓库:
1 | sudo apt-get install unzip |
安装打包环境
1 | sudo apt-get install build-essential fakeroot devscript |
随后,进入该源代码目录,并尝试一次编译。一般来说,由于相关依赖尚未安装,这次编译不会成功,并将提示需要的依赖。请通过 apt-get install
安装它们。
1 | cd php-debian-main-7.4 |
进行编译
1 | debuild -b -uc -us |
编译的结果在 ../
目录下。
结果
编译后,程序会生成 .deb
、.ddeb
以及 .buildinfo
等文件。我的编译结果在 我的 OneDrive 共享 上可以查看。
您通过以下直链在此下载我的结果:
- 仅 deb 包:https://blog-static-1251131545.cos.ap-shanghai.myqcloud.com/post/2020/11-29--php-debian-package-build-guide/php-8.0.0-amd64-deb.zip
- 全部文件:https://blog-static-1251131545.cos.ap-shanghai.myqcloud.com/post/2020/11-29--php-debian-package-build-guide/php-8.0.0-amd64.zip