没有包装系统,我们有(A)源代码,可以翻译/编译成(B)二进制代码。
对于debian / ubuntu包,我们有(1)源代码,(2)源包 - dsc 文件和(3)二进制包 - deb 文件。 (2)与(1)和(3)相关的源包是怎么回事?我们为什么需要它?而且,最重要的问题是:(1)中的工作流生成(2)和(3)是什么?
答案 0 :(得分:12)
工作流程通常大致如下:
Debian的某人下载了源代码,并写了
一组补丁文件,用于在Debian上构建源代码并符合Debian指南。运行
curl -s 'http://archive.ubuntu.com/ubuntu/pool/universe/s/splint/splint_3.1.2.dfsg1-2.diff.gz' | gunzip -dc | less
查看示例包的内容。
.dsc
文件和debian/control
文件。 “DSC”是Debian Source Control的首字母缩写。.deb
包,并应用Debian特定的修补程序。 Here is one such file。 Debian Binary Package Building HOWTO解释了这些文件的格式以及如何检查它们。 .dsc
文件不用于构建逻辑,它更多用于元数据。然而,沿途的许多工具都需要它。例如,Build-Depends:
字段用于安装所需的构建依赖项。
答案 1 :(得分:2)
实际上要复杂得多。 Debian软件包背后的想法是它们包含了删除页面所需的所有信息。通常,源被修改为包含debian
目录,该目录包含描述该包的依赖关系的control
文件以及与其交互的其他包(例如,中断,替换,提供虚拟包)。 rules
文件说明了如何构建和安装软件包。还有关于如何打包的描述,因为单个源包可以变成许多二进制包(例如,foo-utils
,libfoo0
,libfoo-dev
)。 debuild
实际读取此信息,编译并生成二进制包。一个微妙之处:如果foo
使用libbar-dev
,我可能实际上并不知道/关心我使用的libbar
二进制包的版本。 pbuilder
在干净的环境中运行debuild
,因此无法针对您未明确指定的内容进行编译。