我正在学习如何为我的一个小项目创建 deb 包。我已经能够为二进制文件创建 deb 包。到目前为止一切顺利。该过程完成后,我可以看到以下内容:
$ dpkg -c gitmod_0.10-1_amd64.deb
drwxr-xr-x root/root 0 2024-06-01 13:57 ./
drwxr-xr-x root/root 0 2024-06-01 13:57 ./usr/
drwxr-xr-x root/root 0 2024-06-01 13:57 ./usr/bin/
-rwxr-xr-x root/root 31400 2024-06-01 13:57 ./usr/bin/gitmod
drwxr-xr-x root/root 0 2024-06-01 13:57 ./usr/share/
drwxr-xr-x root/root 0 2024-06-01 13:57 ./usr/share/doc/
drwxr-xr-x root/root 0 2024-06-01 13:57 ./usr/share/doc/gitmod/
-rw-r--r-- root/root 154 2024-06-01 13:57 ./usr/share/doc/gitmod/changelog.Debian.gz
-rw-r--r-- root/root 45 2024-06-01 13:57 ./usr/share/doc/gitmod/copyright
我希望能够为不同版本的 debian(甚至其他发行版)生成软件包,因此我希望能够拥有如下软件包:
gitmod_0.10-1_bullseye_amd64.deb
gitmod_0.10-1_bookworm_amd64.deb
因此,我需要能够以参数化的方式提供后缀(即使我需要使用模板文件来生成用于debuild
生成包的文件)。
是否有可能以标准方式实现这一目标?
软件包名称是经过编码的:它们包含软件包名称、版本(包括 Debian 修订版)和体系结构。因此,添加所需样式的后缀的唯一方法是将其添加到 Debian 修订版中。
例如,您可以为 Bullseye 包指定 ,
0.10-1+deb11u1
为Bookworm 包指定 。这将在文件和中生成包。debian/changelog
0.10-1+deb12u1
gitmod_0.10-1+deb11u1_amd64.deb
gitmod_0.10-1+deb12u1_amd64.deb
对于针对给定发行版的不同版本的软件包,最好使用数字版本,以便以有意义的方式对软件包版本进行排序。如果您使用
bookworm
和bullseye
后缀,并且用户最终通过其存储库获得了这两个后缀(例如,在从 Debian 11 升级到 12 期间),apt
则用户会更喜欢该bullseye
版本,因为它比该bookworm
版本“更高”。使用deb11u1
并deb12u1
避免这种情况。请参阅dpkg/aptitude/apt-show-versions 中的版本字符串是什么意思?举个例子。