我正在尝试通过 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 分钟的阅读时间!
博客重点:
通常由于以下原因之一(但不限于这些)需要安装包装器:
- 前置/后置要求
- 事前/事后脚本,例如:删除文件/快捷方式、创建注册表项
- 安装前条件检查,例如:正确的操作系统、正确的计算机名称(或名称的一部分)
- 检查已安装先决条件的版本,例如:MS Office 版本
- 检查用户是否已登录
- 检查用户是否正在使用某个程序,例如:在升级时