.deb文件命名的标准是什么?

我想找出.deb文件名的标准。例如,我有一个名为foo_1.0.0-1_all.deb的文件。根据我在Debian FAQ中发现的情况,有这样的约定。
<foo>_<VersionNumber>-<DebianRevisionNumber>_<DebianArchitecture>.deb

但这并不是一个标准。它没有回答很多问题。例如:
- `` 可以有多长? - `` 中允许的字符是什么? - `` 可以有哪些值?
有没有任何详细描述 deb 文件名称的标准?

1http://askubuntu.com/questions/620533/how-does-ubuntu-name-packages - Maythux
3个回答

嗯,正如你所说,对于deb文件来说,foo_VVV-RRR_AAA.deb这个命名是一个约定俗成的命名方式,其中VVVRRRAAA分别代表了软件包foo的版本、修订和架构。
此外,在使用debuildgit-buildpackage构建软件包时,也建议(规定)遵循这个约定。
如果你同意这个约定,那就没问题;如果不同意,你可以按照自己的意愿重新命名.deb文件,但必须遵循这些规则(在这种情况下,你可能需要运行dpkg --info <deb_file>来获取一些简单的信息,通常情况下,你可以通过上述约定来获取deb文件的名称)。
现在,正如你所能从文件名 - 维基百科中阅读到的:
" 没有普遍适用的文件名编码标准。 由于文件名需要在软件环境之间进行交换(例如网络文件传输、文件系统存储、备份和文件同步软件、配置管理、数据压缩和归档等),在应用程序之间不丢失文件名信息非常重要。这导致广泛采用Unicode作为文件名编码的标准,尽管旧版软件可能不支持Unicode。
[...] 文件名的最大长度并没有一个标准,可能取决于码元大小。虽然这是一个严重问题,但在大多数情况下这是有限的。
"
所以,如果一般文件名没有标准,我几乎可以确定.deb文件名也没有特殊的标准。或者,如果你还是感到困惑,将惯例视为标准,并遵循这些规则

Debian软件包的名称在Debian政策第3.1节中定义,软件包名称 这里,该链接指向第5.6.1节源代码 这里。请注意,明确规定软件包名称用作文件名。
Ubuntu在此基础上添加了一个ubuntuX版本号。这在Ubuntu打包指南的变更日志 这里中有详细说明。为了以防万一URL将来发生变化,我会复制一下内容以保险起见。
请注意,版本号末尾附加了-0ubuntu1,这是发行版修订号,用于在同一源代码发布版本中更新打包(例如修复错误)的新上传文件。
为了避免具有相同源代码版本的冲突软件包,Ubuntu和Debian采用了稍微不同的软件包版本控制方案。如果一个Debian软件包在Ubuntu中被修改过,那么在Debian版本号的末尾会附加ubuntuX(其中X是Ubuntu修订号)。因此,如果Debian的hello 2.6-1软件包被Ubuntu修改过,版本字符串将变为2.6-1ubuntu1。如果在Debian中不存在该应用程序的软件包,则Debian修订号为0(例如2.6-0ubuntu1)。

以下是关于命名规范的一些想法:
如果你使用过 Debian 一段时间,你可能会注意到 Debian 的软件包文件都遵循特定的命名规范。每个 Debian 二进制软件包的文件名应该遵循这个格式:packagename_version_arch.deb,其中 "packagename" 是软件包的名称,"version" 是软件包的版本,包括主版本号、次版本号和修订号,而 "arch" 则表示软件包的架构。 <..> 来自IBM.com 虽然这个指南适用于RPM包管理系统,但它有一个非常好的命名约定: 名称-版本-发布号.架构.rpm
其中: - 名称 是描述打包软件的名称。 - 版本 是打包软件的版本。 - 发布号 是该软件版本被打包的次数。 - 架构 是简称,用来描述打包软件所运行的计算机硬件类型。它也可能是字符串"src"或"nosrc"。这两个字符串都表示文件是RPM源码包。"nosrc"字符串意味着文件只包含了构建软件包所需的文件,而"src"字符串则表示文件既包含了构建软件包所需的文件,也包含了软件的源代码。
来源:RPM.org