DEB:多包,在包构建过程中忽略某些文件的安装

DEB:多包,在包构建过程中忽略某些文件的安装

我已经覆盖文件dh_auto_install:中的目标debian/rule。现在,我所有构建的组件都安装在debian/tmp.

package.install为我的套装中的每个包裹都做好了准备,但是我遇到了这个问题:

A应包含scripts两个文件。

包也B应该包含scriptsdir 但没有两个文件将位于 package 中A

当然,可以在文件scripts中的目录中设置文件debian/B.install。但scriptsdir 包含大量文件,放置每个文件都需要更多时间。

是否可以排除package.install文件中的某些特定文件?

答案1

是否可以排除package.install文件中的某些特定文件?

不是直接的,但至少有三种方法可以实现您所追求的目标。 (既然你提到了重写dh_install,我猜你正在使用短dh风格rules。)

  1. dh_install 副本文件从debian/tmp到他们的目标。它的前身《dh_movefiles》感动了他们;它已被弃用,但在这种情况下仍然可以使用。执行此操作的方法是A在 package Bin之前列出 package debian/control(因此首先处理它,假设两者具有相同的体系结构),重命名A.installA.files并覆盖,dh_install以便它dh_movefiles首先运行:

    override_dh_install:
            dh_movefiles
            dh_install
    

    这会将文件移出Adebian/tmp以便您的B.install文件可以列出scriptsB包含保留在 中的所有文件scripts

    序列dh会跳过,dh_movefiles因此无需执行任何特殊操作即可避免其运行两次。

  2. debhelper配置文件可以是可执行的,因此您可以B.install用一个列出scripts' 内容并过滤掉A.install.

  3. 另一种方法是添加一个步骤,然后dh_install删除Afrom中的任何内容B;就像是

    override_dh_install:
            dh_install
            cd debian/A/scripts; find . -type f -exec rm -f ../B/scripts/{} \;
    

    (未经测试)。

相关内容