如何在安装 debian 包时捕获来自 preinst 文件的退出代码?

如何在安装 debian 包时捕获来自 preinst 文件的退出代码?

我正在尝试通过 shell 脚本在我的机器上安装一个 debian 包,即在 shell 脚本中我给出了dpkg-i 命令命令。内部有一个预安装正在使用的文件。现在在这个文件中,其中一个条件失败了,比如说x=0我要退出出口 2

我希望无论 preinst 文件以什么退出代码退出,我都应该能够捕获该退出代码,并且在我的 install.sh 文件中,我将根据它执行打印语句

问题是当我做回显 $?它总是给我 1,表示 dpkg 安装失败,但我没有得到那个特定的返回代码。有什么办法吗,提前谢谢

答案1

我假设 deb 包的 preinst 文件中没有满足某些条件。我认为最好将检查从 preinst 移到包装器脚本(即 install.sh 文件)。

例如:

#!/bin/bash

if [ "$x" -eq "0" ]; then
   echo Check x = 0 failed
   exit 1;
fi
#Put all other such checks here...

dpkg -i package.deb

假设您可以修改 preinst 和 installer.sh!

博客安装包装器需要 10-15 分钟的阅读时间!

博客重点:

通常由于以下原因之一(但不限于这些)需要安装包装器:

  1. 前置/后置要求
  2. 事前/事后脚本,例如:删除文件/快捷方式、创建注册表项
  3. 安装前条件检查,例如:正确的操作系统、正确的计算机名称(或名称的一部分)
  4. 检查已安装先决条件的版本,例如:MS Office 版本
  5. 检查用户是否已登录
  6. 检查用户是否正在使用某个程序,例如:在升级时

相关内容