是否有适当的程序将 $PREFIX(和其他变量)包含在 debian/package.install 中?

是否有适当的程序将 $PREFIX(和其他变量)包含在 debian/package.install 中?

我正在尝试将软件包的现有 debian/rules 文件转换为使用debhelper。当前规则文件采用指定安装前缀的规则(通过变量)。

有没有办法让我在文件中包含/指定前缀(以及可能的其他变量,例如表示架构的变量).install

举个例子,如果在 64 位机器上构建,并且前缀设置为/opt,我希望能够将包文件安装到${PREFIX}/package/${ARCH}

答案1

因此,debian/ 中的文件似乎应该尽可能与体系结构无关且标准化。这意味着在构建时处理特定于体系结构的步骤,并使“标准”文件(二进制文件、库)可供额外的/debian 中的文件。

答案2

正如 Kevin 所说,我决定使用一条dh_override_install规则:

dh_override_install:
    ARCH=`uname -p`; \
    if test "$${ARCH}" != "x86_64"; then \
        sed -i -e "s/x86_64/$${ARCH}/g" debian/*.install; \
    fi
    dh_install

不要忘记该debian/rules文件是makefile,这意味着您需要有用于缩进的制表符。

$$为了转义,$以便引用我在shell中定义的变量,而不是变量make

由于我的文件x86_64默认为,因此我跳过了。以下是我的文件sed示例:.install

usr/include/uv.h                              usr/include/
usr/include/uv/*                              usr/include/uv/
usr/lib/x86_64-linux-gnu/libuv.a              usr/lib/x86_64-linux-gnu/
usr/lib/x86_64-linux-gnu/pkgconfig/libuv.pc   usr/lib/x86_64-linux-gnu/pkgconfig/

我需要包含架构来选择一些文件的原因在于我有一个开发人员版本(libuv.a)和一个运行时版本(libuv.so)。我有另一个包,我可以不用这个包,因为我可以usr/lib一次复制整个文件夹。在这里,我必须支持架构。不幸的是,Debian 打包程序还不知道这一点。在这种情况下,这真的很有用,我可以想象这种情况一直都在发生……

来源:libuv1/debian/规则

相关内容