构建依赖的 deb 文件

构建依赖的 deb 文件

我正在开发两个 Ubuntu 包,其中一个依赖于另一个。

说,foo这取决于libfoo

我将foo和的版本一起递增。版本libfoo始终依赖于版本。foo1.2.1libfoo1.2.1

libfoo构建和的标准 Debian 流程是什么foo

我是否必须libfoo先构建和安装,然后才进行编译foo

我能否pbuilder以某种方式了解foo需求libfoolibfoo在编译之前进行安装foo

这种情况的最佳做法是什么

答案1

编辑问题中的额外信息:

建设本机执行您想要的操作 - 只需为其提供适当的差分扫描文件。查看依赖项中包含版本的真实示例,例如nmap

apt-get source nmap; cat nmap_*.dsc

并查看该Build-Depends条款:

...
Build-Depends: debhelper (>= 9), libgtk2.0-dev, dh-autoreconf, flex, bison, libssl-dev, libpcap0.8-dev, libpcre3-dev, binutils-dev, liblinear-dev, python (>= 2.3.5-7), python-all-dev, liblua5.2-dev
...

在你的情况下你需要类似

Build-Depends: libfoo (=1.2.1), flex, bison, ...

原始帖子:

因此,让我们总结一下评论......

您需要的是规则文件中的两个条款debian/control

  • 构建依赖- 源包构建所需的其他包的依赖关系
  • 依靠- 安装包依赖其他包

我强烈建议你阅读全文Ubuntu 打包指南.您的问题已在2.2. 控制文件。还可阅读 Debian 团队在以下网址撰写的相同信息Debian 新维护者指南, 更确切地说第 5 章 - 控制文件及其字段。如果您要在公司中维护 deb 软件包(或者有一天不在 Debian 或 Ubuntu 中维护 :)),那么花时间阅读手册将为您节省很多麻烦。

答案2

  • 如果这些包有单独的源档案。我的意思是它们是不同的项目。那么Rostislav Kandilarov 的回答是正确的。

  • 否则,如果它们在同一个源文件中。那么不用担心,只要你的源代码能够使用makecmake或你使用的任何工具)顺利编译和安装即可。打包操作在编译完所有源代码后进行。

调用...等后快速概览进程debuild(确切的进程可能会在./debian/rules文件内覆盖)

  1. 清理树木
  2. 编译它
  3. 将其安装到临时文件夹./debian/tmp/
  4. 将文件分成./debian/tmp/foo/&./debian/tmp/libfoo/文件夹。

    要构建的二进制包应在./debian/control文件中声明:

    Source: foo
    ...
    
    Package: foo
    ...
    Depends: libfoo (=${binary:Version}), ..
    ...
    
    Package: libfoo
    ...
    

    foo.install并且每个包中应该分别包含文件libfoo.install

  5. 使用新生成的控制文件将文件压缩到 Debian 档案中。


让我来回答你的问题:

  • 构建 libfoo 和 foo 的标准 Debian 流程是什么?

    :/ 我不推荐那些冗长的入门手册,但对我来说,作为参考,最好的是寻找真实的例子:

    http://packages.ubuntu.com/source/xenial/vlc

    你看到有多少二进制包是在同一源上构建的吗?查看底部并下载*.debian.tar.xz包含用于打包 VLC 的所有文件的存档。

  • 我是否必须先构建并安装 libfoo,然后再编译 foo?

    不,不需要。

  • 我可以让 pbuilder 以某种方式了解 foo 需要 libfoo,并在编译 foo 之前安装 libfoo 吗?

    不。不需要,Build-Depends:因为它已经在源代码树中可用。但它需要包含在二进制文件Depends:foo

相关内容