添加后置.deb安装脚本

所以我正在构建一个.deb文件,并且需要执行一些安装后的命令(链接库路径和其他一些事情)。
有没有办法让当你运行sudo dpkg -i .deb时,脚本自动运行?
2个回答

你可以在安装后使用位于源代码的debian文件夹中的postinst shell脚本来执行命令。

这是一个普通的shell脚本,包含安装软件包后要执行的所有命令(按顺序)。dpkg会自动运行它。所以,你只需要在将源代码打包成二进制包之前创建一个shell脚本,将其命名为'postinst',并放在debian目录中即可。

想了解更多信息,请访问Ubuntu Packaging Guide


该页面已经不存在了... - Ionică Bizău
2页面是存在的,只是链接错误(末尾有一个重复的'/html')。正确的链接是http://packaging.ubuntu.com/html/。但也许页面已经改变了,因为我发现http://packaging.ubuntu.com/html/packaging-new-software.html更有用。 - Knetic
小心,postinst在“安装软件包”之后并不会被执行,而是在“从deb软件包中提取文件”之后被执行。安装过程可能会失败,但postinst仍然会继续执行。 - Miguel Ortiz
不,@Miguel,如果安装过程在postinst运行之前遇到错误,则postinst不会被执行。 - Stephen Kitt
@StephenKitt 我目前正在处理一个未满足依赖关系并实际执行了postinst的deb包。我将尝试在我的答案中更新实验室信息。 - Miguel Ortiz

有一个文件叫做:
<package directory>/DEBIAN/postinst

这个脚本是一个普通的bash shell脚本,应该包含适当的bash命令,例如:
#!/bin/bash
echo "Post install script is running now"
#systemctl status <your systemd service>

确保在构建Debian软件包时,记得将此安装后脚本复制到软件包中。
我将我的脚本设为可执行。
chmod 755 postinst

这个 postinst 脚本在 apt 软件包管理器安装适当的文件之后执行。
就是这么简单。