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

我想找出deb文件名的标准。 例如,我的文件名为foo_1.0.0-1_all.deb 。 正如我在Debian FAQ中发现的那样,有这样的约定:

 _-_.deb 

但这不是标准。 它没有回答很多问题。 例如:可以多久? 允许的字符是什么? 可以有什么价值?

是否有任何标准详细描述deb文件名?

好吧,正如你所说,deb文件的名称foo_VVV-RRR_AAA.deb只是命名.deb文件的约定,其中VVVRRRAAA是软件包foo的版本,修订版和体系结构。

此外,在使用debuild或git-buildpackage构建包时,建议(规定)此约定。

如果您同意这个约定是好的,如果没有,您可以根据需要重命名.deb文件, 但只能遵循这些规则 (在这种情况下,您可能必须运行dpkg --info 来查找简单信息通常你可以使用上述约定来获取deb文件名)。

现在,您可以阅读Filename – Wikipedia :

文件名没有通用的编码标准。

因为必须在软件环境之间交换文件名(考虑网络文件传输,文件系统存储,备份和文件同步软件,配置管理,数据压缩和存档等),所以不要丢失应用程序之间的文件名信息是非常重要的。 这导致广泛采用Unicode作为编码文件名的标准,尽管传统软件可能不支持Unicode。

[…] Filename最大长度不是标准的,可能取决于代码单元的大小。 虽然这是一个严重的问题,但在大多数情况下这是一个有限的问题。

因此,如果一般没有文件名标准,我几乎可以肯定.deb文件名没有特殊标准。 或者,如果您仍然感到困惑,请将约定作为标准,并遵循这些规则 。

以下是有关命名约定的一些想法:

如果你已经使用Debian任何时间,你可能已经注意到Debian包文件都遵循某些命名约定。 每个Debian二进制包都应该有一个遵循以下格式的文件名:packagename_version_arch.deb,其中“packagename”是包的名称,“version”是包含major,minor和revision编号的包版本,“arch”是包的架构。 <..>

来自IBM.com

虽然这个是针对RPM的,但它有一个非常好的命名约定: nameversionrelease建筑 .rpm

哪里:

  • name是描述打包软件的名称。

  • version是打包软件的版本。

  • release是此软件版本的打包次数。

  • 体系结构是一个简写名称,用于描述打包软件要运行的计算机硬件类型。 它也可以是字符串src或nosrc。 这两个字符串都表明该文件是RPM源包。 nosrc字符串表示该文件仅包含包构建文件,而src字符串表示该文件包含必要的包构建文件和软件的源代码。

来自RPM.org