![debian 软件包构建中 rpm.spec 文件的“排除”命令的替代方法是什么](https://linux22.com/image/135838/debian%20%E8%BD%AF%E4%BB%B6%E5%8C%85%E6%9E%84%E5%BB%BA%E4%B8%AD%20rpm.spec%20%E6%96%87%E4%BB%B6%E7%9A%84%E2%80%9C%E6%8E%92%E9%99%A4%E2%80%9D%E5%91%BD%E4%BB%A4%E7%9A%84%E6%9B%BF%E4%BB%A3%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E4%B9%88.png)
在构建 rpm 包时,我们可以在规范文件中使用此排除命令来排除某些包中的特定文件。
前任。
%exclude foobar/bin/printjob_svr.bin
在构建 deb 包时我们如何以及在哪里指定相同的内容?我有一个在从源构建不同包时需要排除的文件列表。现在我可以从源代码构建三个不同的包,但所有文件在安装时都存在。
答案1
在 Debian 软件包中,您可以通过在安装后(在源软件包中)但在构建软件包之前删除文件,或者不将它们列在要安装的文件列表中,或者将它们从安装中排除来执行此操作(仅适用于某些类型的文件)。
如果您使用的是 Short-style dh
-based debian/rules
,您可能会(隐式)使用
dh_auto_install
,它运行上游安装以放置文件debian/tmp
(因为您正在构建多个包);dh_install
,它根据(等)中的文件内容将文件复制debian/tmp
到适当的安装目标(等) 。debian/foobar
.install
debian
debian/foobar.install
上面列出的三个选项翻译如下。
要在将文件复制到 后删除文件
debian/tmp
,请执行以下操作override_dh_intall: rm -f debian/tmp/bin/printjob_svr.bin dh_install
要告诉
dh_install
跳过文件,不要将它们列在.install
文件中;这意味着您不能使用通配符或普通目录名称 (bin
,bin/*
)。您还应该在 中列出跳过的文件debian/not-installed
,但请参阅 中的警告man dh_missing
。要显式排除文件,请覆盖目标并添加
-X
选项;这仅适用于dh_
支持此功能的命令:override_dh_installdocs: dh_installdocs -Xprintjob_svr.bin
(这与您的用例不符,我将其列出是为了完整性)。