【发布时间】:2015-04-14 18:30:56
【问题描述】:
我正在尝试向 Debian 软件包添加补丁(在运行 Ubuntu 14.10 “Trusty”的 amd64 机器上)。
在解决问题时,我已将补丁缩减为添加单个文件的补丁。 (为了上下文,这个文件修改了一个fluxbox 包,以便它还创建一个带有调试符号的fluxbox-dbg 文件。)
我按照以下步骤创建了补丁:
- (确保我已应用所有现有补丁。)
quilt new add-dbg-package.patchquilt add debian/rules.d/70-debug-symbols.mk- (使用我想要的内容创建了该文件。)
quilt refresh
补丁看起来不错:
- 应用所有补丁后,文件存在且内容正确。
- 补丁包含一个增量,它添加了文件的完整内容,仅此而已。
- 没有其他补丁引用该文件。
- 当我弹出新补丁时,文件被删除;当我再次推动它时,它会重新创建。
但是,当我尝试使用 debuild 重建包时,我得到了这个:
The next patch would create the file debian/rules.d/70-debug-symbols.mk, which already exists! Skipping patch.
1 out of 1 hunk ignored
dpkg-source: info: the patch has fuzz which is not allowed, or is malformed
dpkg-source: info: if patch 'add-dbg-package.patch' is correctly applied by quilt, use 'quilt refresh' to update it
如果我接受它的建议,quilt 会告诉我补丁是最新的(看起来是这样)。 quilt diff 告诉我没有变化。
正如一个想法:为更改 Debian 控制文件添加 quilt 补丁是否不正确?
谁能帮我理解我做了什么冒犯debuild?
【问题讨论】:
-
Breno 是正确的。看起来 Debian 构建系统被这种意想不到的情况弄糊涂了。它不知道如何处理 Debian 子目录的补丁。当然,您可以使用 quilt 将补丁添加到 Debian 子目录,只是不要将其作为构建的一部分应用。如果你认为构建系统可以优雅地处理这个问题,你可以提交一个愿望清单错误,尽管我怀疑维护者会急于产生更清晰的错误消息。