我正在尝试将软件包的现有 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 打包程序还不知道这一点。在这种情况下,这真的很有用,我可以想象这种情况一直都在发生……