* .dsc文件如何与* .deb和源代码文件相关联

时间:2012-11-22 06:42:52

标签: linux ubuntu compilation package debian

没有包装系统,我们有(A)源代码,可以翻译/编译成(B)二进制代码。

对于debian / ubuntu包,我们有(1)源代码,(2)源包 - dsc 文件和(3)二进制包 - deb 文件。 (2)与(1)和(3)相关的源包是怎么回事?我们为什么需要它?而且,最重要的问题是:(1)中的工作流生成(2)和(3)是什么?

2 个答案:

答案 0 :(得分:12)

工作流程通常大致如下:

  1. 没有与Debian有关联的人写了一些源代码并将其作为一个包发布在网络上,例如,splint-3.1.2.tar.gz
  2. Debian的某人下载了源代码,并写了

    1. 一组补丁文件,用于在Debian上构建源代码并符合Debian指南。运行

      curl -s 'http://archive.ubuntu.com/ubuntu/pool/universe/s/splint/splint_3.1.2.dfsg1-2.diff.gz' | gunzip -dc | less
      

      查看示例包的内容。

    2. 描述包的textual metadata file - 这是.dsc文件和debian/control文件。 “DSC”是Debian Source Control的首字母缩写。
  3. 为原始上游源代码中的每个体系结构构建二进制.deb包,并应用Debian特定的修补程序。 Here is one such fileDebian Binary Package Building HOWTO解释了这些文件的格式以及如何检查它们。
  4. .dsc文件不用于构建逻辑,它更多用于元数据。然而,沿途的许多工具都需要它。例如,Build-Depends:字段用于安装所需的构建依赖项。

答案 1 :(得分:2)

实际上要复杂得多。 Debian软件包背后的想法是它们包含了删除页面所需的所有信息。通常,源被修改为包含debian目录,该目录包含描述该包的依赖关系的control文件以及与其交互的其他包(例如,中断,替换,提供虚拟包)。 rules文件说明了如何构建和安装软件包。还有关于如何打包的描述,因为单个源包可以变成许多二进制包(例如,foo-utilslibfoo0libfoo-dev)。 debuild实际读取此信息,编译并生成二进制包。一个微妙之处:如果foo使用libbar-dev,我可能实际上并不知道/关心我使用的libbar二进制包的版本。 pbuilder在干净的环境中运行debuild,因此无法针对您未明确指定的内容进行编译。

详情请咨询Debian New Maintainers' Guide