Bash - 以非交互方式在脚本中接受 EULA

Bash - 以非交互方式在脚本中接受 EULA

我正在尝试构建一个用于 Microsoft Azure Kinect SDK 的奇点容器。我需要以无头方式安装 k4a-tools,但我无法找到以非交互方式接受 EULA 的正确方法。最初我尝试运行:

yes yes | apt -y install k4a-tools

但这种方法似乎有点麻烦。这种方法确实成功过几次,但现在它只是卡在了脚本的这一部分。

基于这个答案我应该能够使用debconf类似以下命令:

echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
sudo apt-get install ttf-mscorefonts-installer

echo但我不知道他们从哪里得到了和之间的部分select。我看到过类似的答案,它们没有解释这种语法从何而来。有些人建议也设置DEBIAN_FRONTEND=noninteractive,但当我这样做时,安装程​​序会退出,因为无法询问 EULA 问题。

另一个答案说我可以用来debconf-show找到正确的语法,但debconf-show没有返回任何内容。

从非交互式 Bash 脚本接受 EULA 的正确方法是什么?

答案1

总结 我解决了我的具体问题,但仍然不知道你应该如何知道这些神奇的词语。

echo 'libk4a1.4 libk4a1.4/accepted-eula-hash string 0f5d5c5de396e4fee4c0753a21fee0c1ed726cf0316204edda484f08cb266d76' | debconf-set-selections
echo 'libk4a1.4 libk4a1.4/accept-eula boolean true' | debconf-set-selections

我通过首先检查手册页来解决这个问题,手册页man debconf-set-selections解释了数据格式的各个部分

第一个值是拥有该问题的包的名称。第二个值是问题的名称,第三个值是此问题的类型,第四个值(直到行末)是用于问题答案的值。

然后我看到错误的输出是

eula 同意问题无法提出

所以现在我知道了包名libk4a1.4,我猜了一下问题名,eula_agree我知道类型,布尔值,答案是 true。但我对问题名的猜测是错误的(我仍然不知道你应该如何找到它。)

这一切都让我发现github 上的一个问题这解决了我的具体问题。

相关内容