【问题标题】:Build debian package without .orig file构建没有 .orig 文件的 debian 包
【发布时间】:2015-06-01 19:34:31
【问题描述】:

我之前使用 Makefile 创建包,命令“dh_make --createorig”,然后调整生成的 debian 文件夹中的文件,最后使用 debuild 命令生成 .deb。该工作流程很简单并且对我有用,但是我被告知要对其进行一些调整,以便您可以从源代码构建项目而不需要原始文件,我不确定该怎么做,但是根据这个( https://askubuntu.com/questions/17508/how-to-have-debian-packaging-generate-two-packages-given-an-upstream-source-arch) 和这个结构 (http://bazaar.launchpad.net/~andrewsomething/imagination/debian/files) 一定有办法。在我的情况下,我将有一个包含源代码和所有内容的文件夹,然后是一个 debian 文件夹(使用 dh_make 生成),但我不确定如何避免 debuild 命令询问 .orig 文件,或者我是否应该使用其他一些命令。

很抱歉这个超长的问题,我想我提供了所有相关信息,但如果有任何模糊之处,我可以澄清一下。

【问题讨论】:

    标签: linux debian software-packaging


    【解决方案1】:

    区别在于文件debian/changelog 中的版本号。

    如果您使用1.2.3-1,它暗示上游软件包 1.2.3 的 Debian 构建 1 --- 构建程序(dpkg-buildpackage 和顶部的任何包装器)--- 假设存在 .orig.tar.gz

    但如果您使用1.2.3,它会认为软件包是“Debian native”,并且存档只是.tar.gz 而不是.orig.tar.gz

    现在选择不应该仅仅取决于您的方便。如果它有上游源,请使用第一个方案。如果没有,第二个就可以了。在我维护的包中,我两者都有,但更多是前者。

    【讨论】:

    • 我更喜欢这种方法来获取上游原始版本。 perl -e "use Dpkg::Version; printf Dpkg::Version->new(\"${VERSION}\")->as_string(omit_epoch => 1, omit_revision => 1);"
    【解决方案2】:

    如果您想直接在源代码包中创建 Debian 目录(即,您正在打包自己的作品,而不是从上游版本),您可以使用 --native 选项到 dh_make

    【讨论】:

      【解决方案3】:

      我认为问题的提出方式有所不同,很明显该项目位于上游,将其格式更改为 native 可能不是一个很好的理由。

      目前我打包了一些上游python项目,我想到了同样的问题。为什么没有任何 dh_* 钩子可以覆盖以动态生成此原始压缩包,这样您就不会被以下问题困扰:

      This package has a Debian revision number but there does not seem to be an appropriate original tar file or .orig directory in the parent directory;

      首先,我在项目中添加了一个 makefile:

      # Makefile VERSION:=$(shell dpkg-parsechangelog -S Version | sed -rne 's,([^-\+]+)+(\+dfsg)*.*,\1,p'i) UPSTREAM_PACKAGE:=click_${VERSION}.orig.tar.gz dpkg: tar cafv ../${UPSTREAM_PACKAGE} . --exclude debian --exclude .git debuild -uc -us clean: rm -f ../${UPSTREAM_PACKAGE} debuild clean

      所以只需一个简单的make clean dpkg 即可构建包。 现在我认为问题仍然存在,如果有人有一些好主意如何在debian/rules 中插入tar 操作,所以我可以调用 debuild -uc -us 它神奇地创建orig tarball 我会很糟糕:)

      【讨论】:

      • 你必须把两个 --exclude 参数放在 before 点“.”,否则 debian/ 和 .git/ 文件夹将包含在 tar.gz 中。
      猜你喜欢
      • 2020-08-22
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 2022-08-19
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      相关资源
      最近更新 更多