以非交互方式提供软件包安装问题的答案?

以非交互方式提供软件包安装问题的答案?

我使用某个软件(星号) 在其源代码树中包含一个漂亮的小脚本,可以自动从发行版的存储库(当然包括 Ubuntu)下载并安装所需的所有软件包。这些先决条件之一(libvpb1) 需要一条信息(默认国家电话前缀),因此脚本变得不那么自动:

安装 libvpb1

在没有运行电话功能的系统中安装这个库是无害的,所以您可以自己测试它。

我的问题是:我如何预先以非交互方式提供答案,以便 apt-get install(或者更确切地说,dpkg -i)抓取并使用它,就好像它是在 ncurses 屏幕中输入的一样?

通用的解决方案会更好,例如,我如何知道任何包是否需要这样的信息,以及如何从脚本中设置它?

答案1

@user535733 在评论中链接的问题有答案;我将尝试在此概括该过程。

首先,以交互方式安装包并提供所需的值;

其次,运行这个:

root@myhost:~# PACKAGE_NAME=libvpb1
root@myhost:~# debconf-get-selections | grep "^${PACKAGE_NAME}[[:blank:]]"
libvpb1 libvpb1/countrycode     string  55
root@myhost:~#

下次安装该包时,只需debconf-get-selections预先将其输出提供给:

root@myhost:~# echo 'libvpb1 libvpb1/countrycode string 55' | sudo debconf-set-selections -v
root@myhost:~# apt-get -y install libvpb1

在 Ubuntu 20.04 中,debconf-get-selections位于debconf-utils软件包中。

相关内容