Launchpad PPA:使用 dh-exec 构建软件包时出现“dh_install:警告:找不到(任何匹配项)“=>”(已在 ., debian/tmp 中尝试)”

Launchpad PPA:使用 dh-exec 构建软件包时出现“dh_install:警告:找不到(任何匹配项)“=>”(已在 ., debian/tmp 中尝试)”

我正在努力将一些打包例程移至 CI 工作流程中,以便在发布应用程序的新版本时节省一些时间。但是,我在使用 Launchpad 时遇到了一个我从未见过的奇怪问题。对于我的数据包(其中包含大量 Lua 脚本和其他文本资源),我使用dh-exec脚本install将所有文件移至二进制包中。多年来,这在我的计算机上一直运行良好,但是当我开始从 CI 服务器构建和上传时,Launchpad buildd 开始针对脚本中的每个文件报告此错误install

dh_install: warning: Cannot find (any matches for) "=>" (tried in ., debian/tmp)

我之前从未在我的系统上看到过这种情况,我在 CI 上使用的 debian 文件夹与我在本地使用的完全相同。 该错误表明=>被解释为文件名,但这是不可能的,因为这=>是文件语法的一部分install,并且标记之间没有多余的空格。 我唯一能想到的是,我用来制作install文件的生成器脚本无法正常工作,但它似乎install与之前的工作脚本相匹配。 我尝试将构建目标从 Bionic 移动到 Focal(以防万一这是一个问题,也因为我在最新版本中放弃了 Bionic),但这不起作用。 我也尝试将路径从 切换到/usr/share/...debian/craftos-pc-data/usr/share/...这允许它构建,但最终将文件放置在/debian已安装的系统上!(我不得不快速紧急拉出那个包。)

我的系统和 CI 服务器之间的唯一区别是 CI 每次都会自动生成更改日志和安装文件,并且这些文件托管在 GitHub 上而不是本地。我现在也使用 Arch Linux 自己构建软件包,但我以前也在 WSL 上使用 Ubuntu 18.04。(我确实在 NTFS 驱动器上创建了 repo - 希望那里没有权限问题?我知道这install需要可执行权限,但这似乎不是问题,因为它仍在执行脚本。)

install我的文件如下所示:

#!/usr/bin/env dh-exec
hdfont.bmp => /usr/share/craftos/hdfont.bmp
debug/console.lua => /usr/share/craftos/debug/console.lua
debug/showfile.lua => /usr/share/craftos/debug/showfile.lua
debug/profiler.lua => /usr/share/craftos/debug/profiler.lua
debug/releasenotes.lua => /usr/share/craftos/debug/releasenotes.lua
...

有人知道是什么原因导致出现此问题吗?如果您需要它们,请参考以下链接控制文件档案完整的构建日志以及构建脚本:工作流程从工作流调用的构建和上传脚本

更新:debian/install我设法通过移动到 来让它工作debian/craftos-pc-data.install。但是,我很想知道为什么以前install可以工作,但现在却不能工作了——我无法从 Debian 找到任何关于可能发生了什么变化才导致这种情况的信息。

答案1

如果使用 Launchpad 构建正是这个.debian档案,则问题出在缺少可执行位debian/install

$ tar tvf craftos-pc-data_2.7.1-1.debian.tar.xz debian/install
-rw-r--r-- 0/0           16269 2022-09-01 22:44 debian/install

你的最新存档已设置可执行位:

$ tar tvf craftos-pc-data_2.7.1-4.debian.tar.xz debian/craftos-pc-data.install
-rwxr-xr-x 0/0           16269 2022-09-01 23:53 debian/craftos-pc-data.install

由于您没有重命名任何安装的文件,因此您实际上不需要dh-exec;如果您更改构建脚本,使install文件看起来像

hdfont.bmp usr/share/craftos/
debug/console.lua usr/share/craftos/debug/
debug/showfile.lua /usr/share/craftos/debug/

IE文件名后跟其目标路径,您可以dh-exec完全放弃构建依赖。

您甚至可以使用单个条目处理目录,从而将install文件缩减为:

bios.lua usr/share/craftos/
hdfont.bmp usr/share/craftos/
debug usr/share/craftos/
rom usr/share/craftos/

甚至

bios.lua hdfont.bmp debug rom use/share/craftos/

相关内容