在 DEB 包中包含二进制文件

use*_*611 5 packaging dpkg bazaar deb binary

我需要主要从 Node.js Javascript 文件构建一个 DEB 包,但它也应该包含一些二进制文件。它们列在debian/source/include-binaries 中。否则我会收到错误消息

dpkg-source: error: unrepresentable changes to source
Run Code Online (Sandbox Code Playgroud)

有问题的命令是:

bzr builddeb -- -us -uc
Run Code Online (Sandbox Code Playgroud)

添加文件include-binaries 后,再次运行bzr builddeb -- -us -uc时,现在出现不同的错误:它说

dpkg-source: error: aborting due to unexpected upstream changes, see /tmp/mailadmin_0.0-1.diff.n6m5_6
Run Code Online (Sandbox Code Playgroud)

我不知道如何摆脱这个。

在下一行输出中,它告诉我

dpkg-source: info: you can integrate the local changes with dpkg-source --commit
Run Code Online (Sandbox Code Playgroud)

但是,如果我在包的构建区域中运行此命令,即使构建区域中也存在debian/source/include-binaries,它也会再次对源错误消息进行无法表示的更改

我错过了解决这个问题的方法......

我尝试删除构建过程中产生的所有文件,仍然没有成功。

更多细节:

目标目录是/opt/mailadmin。由于这个目录不常见,我把它列在文件debian/mailadmin.install(其中包含一行:)

opt/mailadmin opt/
Run Code Online (Sandbox Code Playgroud)

BZR builddeb过程使用预期该文件。

没有上游 tarball,因为该项目是新的。

and*_*ing 2

您的错误与二进制文件无关。虽然听起来确实非常相似。(在这些情况下,可能值得提交一个dpkg关于更好的错误消息的错误。)如果它是关于二进制文件,它看起来像:

dpkg-source: error: cannot represent change to package_name-X.Y/debian/some_binary_file.png: binary file contents changed
Run Code Online (Sandbox Code Playgroud)

即使如此,只有当您使用旧样式版本1.0源代码包时才会发生这种情况。

这与上游 tarball 有关。如果您真的在使用,bzr builddeb -- -us -uc您必须确信bzr builddeb您有一个上游 tarball,否则在查找时会出错。您创建的任何 tarball 的内容与 bzr 分支的内容都不匹配,因此您会收到有关“意外的上游更改”的错误。

处理这种情况最简单的方法是传递标志--split

bzr builddeb --split -- -us -uc
Run Code Online (Sandbox Code Playgroud)

bzr help builddeb

  --split               Automatically create an .orig.tar.gz from a full
                        source branch.
Run Code Online (Sandbox Code Playgroud)

这只是将外部的所有内容/debian放入 tarball 中并使用它。