0

我有一个已经发布的 debian 软件包,但我正在尝试对其应用安装后步骤,但它没有被执行。我的包的上游仓库和发布仓库分别在下面的链接中: https://github.com/shadow-robot/sr_hand_detector/blob/melodic-devel/scripts/postinst https://github.com/shadow-robot/ sr_hand_detector-release

正如您在第一个链接中看到的,我在脚本文件夹中有一个 postinst 文件。在发布时,我刚刚拥有它,据我所知,它不会将脚本插入到我的 debian 版本中。因此,就在今天我进行了额外的更改,即我手动提交并将 postinst 文件推送到发布 repo 的 debian/melodic/sr_hand_detector 分支,如下所示: https ://github.com/shadow-robot/sr_hand_detector-release /tree/debian/melodic/sr_hand_detector/debian

sudo apt install但是,我可以看到当我执行步骤时脚本仍然没有应用。因此,我的问题是 - 我必须执行哪些额外步骤才能干净地使安装后步骤适用于我的 debian 版本。我是否只需要创建另一个版本发布并对 rosdistro 进行 PR,我是否只需要等到下一次同步,或两者兼而有之,或者我在这里缺少的其他步骤?

提前感谢您的任何建议!

4

1 回答 1

0

你可以找到,如果系统安装了你的脚本。入住/var/lib/dpkg/info/<package_name>.postinst。我假设 apt/dpkg 安装了它。

所以问题出在postinst

<HERE THE ERROR: A EMPTY LINE>
#!/bin/sh
set -e
(...)

第一行是空的。内核只检查第一个字节:#++ !ev。一个空格(过去需要)+ 一个应该以 . 开头的路径/

因为你有一个空行,内核检查失败,所以他尝试直接执行程序(不将其传递给/bin/sh),但它不是一个有效的二进制程序,所以它无法执行脚本。

于 2020-12-08T13:11:51.543 回答