我正在努力将一些打包例程移至 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/