Debian还是debian的.deb软件包?

我正在尝试创建一个.deb软件包,并对软件包的文件结构不确定。包含controlchangelogrules等文件的目录应该命名为DEBIAN还是debian
我正在使用`dpkg-deb`来打包它,但似乎需要`DEBIAN`文件夹。我尝试使用Lintian进行检查,但它无法识别`changelog`和`copyright`文件。Lintian报错显示`debian-changelog-file-missing`和`no-copyright-file`,但后来又警告`unknown-control-file changelog`和`unknown-control-file copyright`。根据this page的建议,我将文件夹重命名为`debian`,但这导致`dpkg-deb`失败。阅读Debian Policy Manual时,通常示例中使用`debian`,但偶尔也会使用`DEBIAN`,这让我想知道在某些情况下是否两者都需要。请问正确的做法是什么?
2个回答

创建软件包时,你会有一个名为debian的目录,其中包含制作软件包所需的数据(如control文件、rules文件、changelog文件等)。dpkg-deb并不是制作软件包的常规方式,它只是提供了一种快速组装软件包的方法。通常情况下,你会使用dpkg-buildpackage来制作软件包。

源代码包(即尚未编译的源代码树)使用小写的debian目录。例如,如果您使用dpkg-buildpackage来编译一个C程序并生成二进制.deb文件,您将拥有如下的源代码树:
foo-1.0/
 ├─debian/
 │  ├─changelog
 │  └─control
 ├─main.c
 ├─main.h
 └─Makefile

大写的DEBIAN显然只在二进制包(即编译后的.deb文件本身)中找到,在它们的'control.tar'存档中。
然而,根据dpkg文档,这个'DEBIAN'目录是一个历史遗留物,来自非常旧的dpkg软件包格式(如2000年之前的版本;参见'man deb-old'和'man deb')。所有新的.deb软件包都将控制文件直接放在'control.tar'存档的顶层。
$ tar -tf control.tar
./changelog
./control
./postinst