首页 > 解决方案 > 如何修改 Debian 源代码包以包含附加的可执行脚本?

问题描述

目标:我想创建一个修改过的Debian源码包,即官方rrdtool包+“一些改动”。其中一项更改是添加了可执行脚本。


我有这个用于修补我使用多年的软件包的秘诀:

dget http://bla/bla/bla.dsc
cd bla-1.0
(hack hack hack...)
dpkg-source -b .

如果补丁不 chmod 任何文件,但使用引入可执行文件的补丁,则此方法有效,按照上面的配方会产生以下消息:

dpkg-source: warning: executable mode 0755 of 'foobar' will not be represented in diff

果然,当我解压我的新源包foobar时存在但不可执行。


据我了解,被子处理基于 GNU diff+patch 的补丁。GNU diff+patch 不处理文件权限。唔...

那么如何将可执行脚本引入被quilt维护的源码包中呢?

谷歌搜索没有帮助。似乎其他人已经问过了,但没有回复。

我知道我可以简单地对*.orig.tar.gz存档进行修改,但如果可能的话,我想避免这种情况。我只是惊讶于这是如此困难......

标签: debianpackagingdpkgdebhelperquilt

解决方案


与大多数涉及 Debian 打包的事情一样,我相信很可能有几种方法可以用来实现您的目标。由于我仍然是该过程的新手,因此我要建议的方法相当不雅,但也很容易实现。

Debian 维护者指南告诉我们该文件debian/install...

每个文件安装一行,文件名(相对于顶层构建目录),然后是一个空格,然后是安装目录(相对于安装目录)。使用此功能的一个示例是二进制 src/bar 未卸载;安装文件可能如下所示:

src/bar usr/bin

这意味着当这个包被安装时,将会有一个可执行的命令 /usr/bin/bar。

这使我认为,如果您debian/install为被子补丁生成的包的新可执行脚本创建了这样一个文件,列出了它相对于构建目录根目录的路径以及您希望它驻留的绑定目录,那么您将让包执行如预期的。

另一种方法可能是使用DMM本节中概述的 postinst 脚本。


推荐阅读