我正在通过以下方式进行无人值守/非交互式软件包安装
DEBIAN_FRONTEND=noninteractive apt-get install -y my_package
这在大多数情况下都可以正常工作,但如果存在配置文件冲突,仍然会给我一个交互式提示,例如:
Configuration file '/etc/foo'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
我知道我可以通过将合适的dpkg
选项传递给apt-get
via-o
来选择这个问题的答案,例如
DEBIAN_FRONTEND=noninteractive apt-get -o DPkg::Options::=--force-confdef install -y my_package
但是,提供的相应选项dpkg
似乎不包括在发生冲突时中止安装的方法,而这正是我所需要的。
apt-get
如果遇到配置冲突,如何以非交互方式安装软件包并失败?
我也可以接受以下内容:
- 调用前非交互检查
apt-get
是否会发生冲突 - 将配置文件的版本保留在磁盘上(如
--confold
),但随后以非零退出代码退出或使用其他方法来检测此情况。