Debian 软件包命名约定?

Pre*_*exo 18 packaging debian package-management

这一切都非常令人困惑。那里有不同的例子,例如:

<package-name>_<epoch>:<upstream-version>-<debian.version>-<architecture>.deb
Run Code Online (Sandbox Code Playgroud)

来源:debian 包文件名

部分5.6.12版本或Debian策略手册还涉及到实际的包文件名吗?还是只针对控制文件中的字段?

在这个关于存储库格式的wiki 主题中,它并没有真正说明任何关于约定的内容,在开发人员最佳实践指南中也是如此

也许我只是在寻找错误的东西,请帮助我并告诉我在哪里可以找到 Debian 软件包名称约定。我特别好奇 Debian 代号放在哪里。我想做这样的事情:

<package-name>_<version>.<revision>-<debiancodename>_<architecture>.deb
Run Code Online (Sandbox Code Playgroud)

哪里<debiancodename>只是squeezewheezy

Fra*_*iat 13

我的理解是您想将一个软件包分发/部署到多个基于 Debian 的发行版。

在 Debian/Ubuntu 世界中,您不应该提供单独的.deb文件来下载和安装。相反,您应该提供一个 APT 存储库。(在 Fedora/Red Hat/CentOS 世界中,我会提出类似的建议来提供 YUM 存储库)。不仅解决了如何命名 deb 文件的问题,而且存储库是提供更新版本包的有效方式,包括错误修复和安全更新。创建 APT 存储库超出了本页面/问题的目的,只需搜索“如何设置 apt 存储库”

现在回到你的问题:“包命名约定”:

当您使用 生成包时dpkg-buildpackage,包将以标准方式命名。引用dpkg-name联机帮助页:

完整的包名称由包的控制文件中指定的 package_version_architecture.package-type 组成。

package_version_architecture.package-type
Run Code Online (Sandbox Code Playgroud)

Debian 政策了解控制文件语法的正确位置:名称(对于源包和二进制包)、版本架构包类型

没有规定说明分配,因为这不是事情的发展方式。

如果您需要为多个发行版编译相同版本的包,您将更改该version字段(在debian/changelogdebian/control文件中)。有些人在版本字段中使用发行版名称。例如openssl

0.9.8o-4squeeze14 
1.0.1e-2+deb7u14
1.0.1k-1 
Run Code Online (Sandbox Code Playgroud)

如果这就是您想要做的,请务必阅读 debian-policy about debian_revisionin version