我正在尝试创建一个 .deb 包,但不确定包的文件结构。包含control
、changelog
、rules
等的目录应该命名为DEBIAN
还是debian
?
我正在使用它dpkg-deb
来打包它,它似乎需要DEBIAN
,我试图使用 Lintian 来检查它,但它无法识别changelog
或copyright
文件。Lintian 抛出错误debian-changelog-file-missing
和,no-copyright-file
但后来警告unknown-control-file changelog
和unknown-control-file copyright
。查看这一页,它建议使用debian
,我将目录重命名为该目录,但会导致dpkg-deb
失败。阅读Debian 政策手册,它通常debian
在示例中使用,但偶尔也会使用DEBIAN
,这让我怀疑在某些情况下是否两者都需要。正确的做法是什么?
答案1
当创建包时,您有一个debian
目录,其中包含制作包所需的数据(文件control
、、rules
等)changelog
。dpkg-deb
不是制作包的常用方法 - 它只是提供了一种快速组装包的方法。您通常使用dpkg-buildpackage
。
答案2
来源软件包(即尚未编译的源代码树)使用小写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