如何为 Debian/Ubuntu 创建 DEB 软件包
Linux 上的大多数软件都是作为软件包分发的。为基于 Debian 的发行版创建 DEB 包比您想象的要容易。
DEB 包是一个包含所有文件的存档,包括应用程序的编译版本、源代码、配置文件、映像和安装命令。基于 Debian 的操作系统(如 Ubuntu 和 Kali Linux)中的 DEB 文件相当于 Windows 中的 EXE 文件。
以下是您如何为基于 Debian 的 Linux 发行版开发自己的 DEB 软件包。
第 1 步:安装所需的软件包
准备 Debian 软件包需要一些程序。首先,在您的系统上安装这些实用程序:
sudo apt install build-essential binutils lintian debhelper dh-make devscripts
第 2 步:套餐选择
在为程序创建 Debian 软件包 (DEB) 之前,您应该考虑以下几点:
检查您计划创建的软件包是否已在 Debian 存储库中:
apt-cache search package-name
检查您要打包的程序具有哪种类型的许可证。使用 GNU/GPL 许可证是一种普遍的文化。
确保该程序不会给系统带来安全问题。
联系该程序的作者。通知 Debian 开发者此程序进入 Debian 存储库。
第三步:开始准备包裹
首先,在您的主目录下创建一个新目录以避免混淆。
cd /home
mkdir package
cd package
然后在此目录下提取包含要打包的程序源代码的 tar 存档。为了进行演示,我们将使用 rsyslog 存档。
tar -zxvf rsyslog-6.3.6.tar.gz
使用 cd 命令导航到新创建的目录:
cd rsyslog-6.3.6
通常,程序的源代码附带INSTALL和README文件。即使您知道该程序是什么以及它如何工作,花一些时间阅读这些文件也会对您有所帮助。
有诸如 ./configure make 和 make install 之类的命令可以轻松地将此类存档安装到您的系统上。但您应该注意 ./configure 选项的几个参数。您可以使用./configure --help命令来获取此类信息。
第四步:添加开发者信息
在为您的程序创建 DEB 包之前,请注意包名称和版本号。创建包时您还需要添加一些打包程序信息。为此,您必须使用以下命令导出您的信息:
export DEBEMAIL="your@mail.com"
export DEBFULLNAME="Name Lastname"
之后,使用魔法命令dh_make。
dh_make
发出dh_make命令后,您应该选择包类型并按Enter。
执行此步骤后,您将注意到父目录中有一个扩展名为“.orig”的目录。如果这不起作用,请尝试运行带有 --createorig 参数的 dh_make 命令。
ls
# Output
rsyslog-6.3.6 rsyslog_6.3.6.orig.tar.xz rsyslog-6.3.6.tar.gz
您还可以在当前工作目录中看到一个名为 Debian 的新目录。这些目录和文件包含有关该程序的所有 Debian 软件包相关信息。
第5步:与软件包相关的Debian文件
您需要了解有关 Debian 目录中的文件的以下信息。
1. 控制文件
控制文件提供各种与包相关的信息。
来源:您将在其中指定程序名称的行
Section:根据许可证确定您的程序属于哪个部分的行
Maintainer:包含准备包的人的信息的行
Build-Depends:此行列出了依赖项
取决于:这条线非常重要。您可以使用此值指定包的依赖项
描述:您可以在其中输入有关包裹的信息的行
2. 版权文件
该文件包含有关程序许可证的信息。其默认内容如下:
3. 变更日志文件
该文件就像您的程序的日志路线图。如果您做了一些与程序源无关的事情或者修复了一些错误,则可以将其添加到此文件中。
4. 规则文件
规则文件就像 Debian 软件包的 Makefile。使用 dpkg 安装准备好的 Debian 软件包时,以该文件中的信息为基础。
您当然可以根据需要更改此文件中的参数。
5.目录中的其他文件
了解以下文件的功能也可能很有用:
README.Debian:自述文件
conffiles.ex:如果您想在安装程序时保留旧的设置文件,请使用此文件
cron.d.ex:您可以使用此文件执行 cron 操作
dirs: 使用此文件指定不应在安装期间安装但应在以后创建的目录
docs:如果您的程序中有文档,请使用此文件指定它们
emacsen*.ex:如果您的程序在安装过程中需要Emacs文件,请使用此文件指定
init.d.ex:如果您希望程序在系统启动时运行,请使用此文件
要继续进行下一阶段,请删除您认为不再需要的所有文件。然后重命名文件扩展名并删除末尾的“.ex”。 “.ex”(示例)表示这是一个示例文件。
第 6 步:构建包
如果您已经完成了这一步,那么您现在可以为您的程序准备 Debian 软件包了。为此,请运行以下命令:
dpkg-buildpackage
这里的另一个重要问题是为您导出为维护者的电子邮件地址创建 GPG。
export DEBEMAIL="example@mail.com"
dpkg 将在创建包时查找您的 GPG 信息。您可以使用命令gpg --list-keys列出它。
如果您在dpkg-buildpackage阶段遇到任何问题,请尝试以下命令:
dpkg-buildpackage -nc -i
该命令将忽略一些可能导致错误的部分。
如果一切顺利,您的程序的 Debian 软件包将准备好安装并存储在下一个目录中。使用以下命令,您可以安装、测试和查看该包。
dpkg -i package-name
任何人都可以在 Linux 上创建包
DEB 打包系统是 Debian 作为 GNU/Linux 领导者的最基本要素之一。 Debian 是一个大型系统,对于贡献者来说,能够创建自己的软件包非常重要。
如果您是 GNU/Linux 的新手,这可能会让人感到困惑。然而,正如您所看到的,准备 Debian 软件包比您想象的要简单。当然,构建 Debian 软件包需要时间和工作。
但这并不意味着您必须为要安装的程序手动创建包。互联网上有几个网站可以免费下载 DEB 软件包。