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



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

在debian/ubuntu包的情况下,我们有(1)源代码,(2)源包-dsc文件和(3)二进制包-deb档案。(2)源程序包与(1)和(3)有何关联?我们为什么需要它?而且,最重要的问题是:从(1)生成(2)和(3)的工作流是什么?

工作流程通常大致如下:

  1. 与Debian无关的人编写了一些源代码,并将其作为包发布在网络上,例如,splitnt-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. 描述包的文本元数据文件——这是.dsc文件和debian/control文件。"DSC"是Debian源代码管理的缩写
  3. 二进制.deb包是根据应用了Debian特定补丁的原始上游源代码为每个架构构建的。这是一个这样的文件。Debian二进制包构建HOWTO解释了这些文件的格式以及如何检查它们

.dsc文件不用于构建逻辑,更多用于元数据。然而,许多工具都需要它。例如,Build-Depends:字段用于安装所需的构建依赖项。

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

有关详细信息,请参阅Debian新维护人员指南。

相关内容

  • 没有找到相关文章

最新更新