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

     2023-03-07     196

关键词:

【中文标题】*.dsc 文件如何与 *.deb 和源代码文件相关联【英文标题】:How *.dsc files are related to *.deb and source code files 【发布时间】:2012-11-10 12:35:34 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

详情请咨询Debian New Maintainers' Guide。

【讨论】:

感谢您的回复。到目前为止,我已经使用了 debuild,但你是说我应该使用 pbuilder 来代替?什么是源码包?它们不被使用?链接你发布它很棒,但它的大小吓到我阅读:) pbuilder 是一个方便的工具,用于验证是否完全指定了依赖项。它基本上创建了一个虚拟环境,除了声明的依赖项之外什么都没有;如果它无法完成构建,通常意味着您有一个未声明的依赖项。但是,如果您只是对此时此地生成.deb 文件感兴趣,则没有必要如此严格。 源包是 debianized 源,即基本上是 .orig.tar.gz 加上你的 debdiff。这是您需要提供给其他想要为自己创建 .deb 文件的人,可能使用他们自己的补丁或调整,或者他们可能希望为不同的架构构建包。如果您想将其提供给其他人,pbuilder 可能会开始有意义。【参考方案2】:

工作流程通常大致如下:

    不隶属于 Debian 的人编写了一些源代码并将其作为软件包发布在网络上,例如,splint-3.1.2.tar.gz

    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
      

      查看示例包。

      描述包的textual metadata file — 这是.dsc 文件和debian/control 文件。 “DSC”是 Debian Source Control 的首字母缩写。
    二进制.deb 包是为每个架构从原始上游源代码构建的,并应用了特定于Debian 的补丁。 Here is one such file。 Debian Binary Package Building HOWTO 解释了这些文件的格式以及如何检查它们。

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

【讨论】:

很好的答案!还有一个问题。在您在这里给出的示例中,我们有原始代码(上游)和维护者更改后的差异。当原始代码的新版本即将被“debianized”时,维护人员如何跟踪他们的更改?他们将以前的 deb 版本的差异合并到新版本的源代码?他们是否使用了一些 CVS? 发布新版本后,他们通常会重新应用旧 .diff.gz. 中的补丁程序,如果出现问题,他们会继续挖掘。一些维护者可能会使用gitquilt 或其他我不知道的工具,但据我所知,这真的取决于包维护者。 您答案中的某些链接已损坏。

如何将 log4j 每日日志轮换与基于文件大小的轮换和最大备份相结合?

】如何将log4j每日日志轮换与基于文件大小的轮换和最大备份相结合?【英文标题】:Howtocombinelog4jdailylogrotationwithfilesizebasedrotationandmaxbackup?【发布时间】:2021-07-1109:53:36【问题描述】:我想为log4j配置以下内容:每天轮换日志文... 查看详情

如何将文件类型与 iPhone 应用程序相关联?

】如何将文件类型与iPhone应用程序相关联?【英文标题】:HowdoIassociatefiletypeswithaniPhoneapplication?【发布时间】:2010-05-0514:59:22【问题描述】:关于将您的iPhone应用程序与文件类型相关联的主题。在this信息性问题中,我了解到应... 查看详情

如何将文件类型与 iPhone 应用程序相关联?

】如何将文件类型与iPhone应用程序相关联?【英文标题】:HowdoIassociatefiletypeswithaniPhoneapplication?【发布时间】:2010-05-0514:59:22【问题描述】:关于将您的iPhone应用程序与文件类型相关联的主题。在this信息性问题中,我了解到应... 查看详情

如何读取故障转储文件(我有源代码和 .pdb 文件)

】如何读取故障转储文件(我有源代码和.pdb文件)【英文标题】:Howtoreadacrashdumpfile(Ihavesourcecodeand.pdbfiles)【发布时间】:2013-02-0508:07:47【问题描述】:我已经阅读了***上的问题,但我仍然无法使其发挥作用。我有来自客户的小... 查看详情

DSC 文件资源 - 覆盖/替换文件内容

】DSC文件资源-覆盖/替换文件内容【英文标题】:DSCFileResource-overwrite/replacefilecontents【发布时间】:2021-04-1111:06:52【问题描述】:我正在尝试使用DSC文件资源更新一个目录中的一些特定文件。在我的示例中,我要更新(即覆盖)... 查看详情

从源代码与 deb 包编译

】从源代码与deb包编译【英文标题】:Compilingfromsourcevs.debpackage【发布时间】:2011-02-2119:00:54【问题描述】:我正在Ubuntu上从源代码编译几个C/C++包。我将构建的结果与使用debian安装运行的结果进行比较,发现我的可执行文件速... 查看详情

如何使用 .desktop 文件(在 linux 下)将文件扩展名与应用程序相关联?

】如何使用.desktop文件(在linux下)将文件扩展名与应用程序相关联?【英文标题】:HowdoIassociateafileextensionwithanapplicationusinga.desktopfile(underlinux)?【发布时间】:2011-05-1205:52:28【问题描述】:我有一个.desktop文件,它将我的应用程... 查看详情

如何将我的 NVRTC 程序源与文件相关联?

】如何将我的NVRTC程序源与文件相关联?【英文标题】:HowcanIassociatemyNVRTCprogramsourcewithafile?【发布时间】:2021-04-0716:18:48【问题描述】:我正在使用NVRTC编译内核。相关的API调用是:nvrtcResultnvrtcCreateProgram(nvrtcProgram*prog,constchar*src... 查看详情

Oracle SQLLDR - 使用参数文件指定多个日志、dsc、坏文件

】OracleSQLLDR-使用参数文件指定多个日志、dsc、坏文件【英文标题】:OracleSQLLDR-Usingparameterfiletospecifymultiplelog,dsc,badfiles【发布时间】:2021-04-2017:54:20【问题描述】:我不确定如何使用OracleSQLLDR将文件加载到单个表中来处理这种情... 查看详情

调用了shell脚本的qt程序如何打包成.deb文件

...包描述,等等;      *在本机编译源代码;      *在本机生成.deb包;需要用到的工具:        *dh_make(dh-make包的一部分)——用于自动创建./debian目录和其... 查看详情

ubuntu下如何安装.deb文件?

...行安装,如果只使用命令行,就发布命令。dpkg-i【完整的文件名】所谓【完整的文件名】是除了文件名和后缀一点都不能有差别外还可以包括存放该文件的路径。 查看详情

我如何与 xcopy 的速度相媲美?

...或最佳实践指南显示了在本地机器、lan、san和wan周围复制文件的最快方法,其速度可以与windows7(或8)的内置xcopy相媲美)或Windows资源管理器副本?说白了,并不是所有的文件IO都是一样的。在某些协议和技术中有不同的开销。一... 查看详情

如何获取ubuntu源码包里面的源码进行编译(代码片段)

...码进行编译1、在获取源码包之前,确保在软件源配置文件/etc/apt/sources.list中添加了deb-src项2、使用如下命令获取xxx源码包的详细信息:sudoapt-cacheshowsrcxxx这用来查询当前镜像站点中是否有该源码包。3、源码包中通常包含3个文... 查看详情

如何获取ubuntu源码包里面的源码进行编译(代码片段)

...码进行编译1、在获取源码包之前,确保在软件源配置文件/etc/apt/sources.list中添加了deb-src项2、使用如下命令获取xxx源码包的详细信息:sudoapt-cacheshowsrcxxx这用来查询当前镜像站点中是否有该源码包。3、源码包中通常包含3个文... 查看详情

ubuntu如何安装deb

参考技术Aubuntu默认安装的系统,双击deb文件,可以安装。如果双击不能安装,最好转为命令行安装。打开虚拟终端(ctrl+alt+T),输入sudodpkg-i(注意中间和最后都有一个空格)然后在文件管理器中,用鼠标把deb文件拖入虚拟终端... 查看详情

如何安装apt-get

linux系统中,软件通常以源代码或者预编译包的形式提供。软件源代码需要编译为二进制的机器代码才能够使用,安装比较耗时,不过您可以自行调节编译选项,决定需要的功能或组件,或者针对硬件平台作一些优化。预编译的... 查看详情

deb打包详细学习记录(持续更)(代码片段)

deb打包学习1、一个最简单的deb打包,helloworld1.1配置文件安装位置和desktop文件书写1、一个最简单的deb打包,helloworld第一步先写一个cpp文件然后g++成可执行文件,这里文件名为helloworld.cpp#include<iostream>usingname... 查看详情

Azure DSC 将文件从存储上传到 VM?

】AzureDSC将文件从存储上传到VM?【英文标题】:AzureDSCuploadafilefromstoragetoVM?【发布时间】:2020-10-2923:04:36【问题描述】:我在dsc中使用以下代码,但它从不编译?我总是收到消息“停止:术语\'xRemoteFile\'未被识别为cmdlet、函数、... 查看详情