也许这篇博文可能对你有所帮助。
它详尽地描述了一个 deb 包的结构,如下所示:
<YOUR PACKAGE NAME>
└── deb
├── DEBIAN
│ ├── conffiles
│ ├── control
│ └── preinst
└── opt
└── <YOUR APPLICATION>
└── <Your Application Contents>
基本上,您在包内有一个 deb 文件夹,其中包含以下 2 个必需文件夹:
- DEBIAN - 包含描述 deb 包本身的文件
- 镜像包安装目标的文件系统结构。在上面的示例中,包将部署在
/opt/<YOUR APPLICATION>目录中。
在 DEBIAN 目录中,您必须至少拥有control一个纯文本文件。它需要包含链接页面中详细描述的特定格式的条目。这是一个带有示例控制文件的示例(取自那里):
Package:packagingmono
Version:1.0
Maintainer:Mikael Chudinov <mikael@chudinov.net>
Architecture:amd64
Section:net
Description:Template for Debian packaged Mono application.
Depends:mono-complete (>=3)
Package必须是你的包名。允许使用大写/小写拉丁字母、数字和-.
Version- 软件包版本。我建议使用该字段的程序集版本。
Maintainer- 包开发者姓名和联系信息。
Architecture- 要么i386要么amd64。如果您想将针对 x86 和 x64 优化的应用程序作为每个平台的单独可执行文件分发(我的意思是为 x64 或 x86 明确构建,而不使用 AnyCPU),那么您应该为每个平台生成单独的 .deb 包,并Architecture适当地设置字段。其余字段可能仍然相同。
Section- 可选,可以是 debian apt 系统中任何允许的包类别。
Description. 由两个标记组成 - 简短描述(新行符号之前的第一项)和可选的更长的描述(第一个新行之后的文本)。
Depends- 包的依赖项列表。该示例说明mono-complete了哪个是单声道运行时的包名称,并进一步将其限制为高于或等于版本 3
关于 deb 包需要了解的重要一点是,您实际上可以将整个应用程序(bin 文件夹的内容)放入单个包中。无需将引用的库放在单独的包中并将它们标记为依赖项,如果您计划安装依赖于相同库的其他应用程序,后者是有意义的。此外,将应用程序打包在一起不会让 dll-hell 问题有朝一日成为 package-hell 问题。这样做的一个缺点是包装的尺寸可能会变大。
本文还推荐了一些原生 GNU/Linux 工具,它们将帮助您创建包。例如xbuild,可用于运行将为您打包的 MSBuild 文件。这将有助于使 Windows 开发人员更熟悉这些内容。该lintian工具还可以帮助您解决生成的 .deb 文件的问题。其余工具是在 MSBuild 打包过程中调用的中间实用程序。