在容器内,从 deb 文件安装 dpkg 失败,无法提供许可证

在容器内,从 deb 文件安装 dpkg 失败,无法提供许可证

主机运行ubuntu 20.04

Docker 容器基础是 nvidia 的nvcr.io/nvidia/deepstream:6.0.1-triton,应该基于ubuntu 20.04

尝试安装 graph_composer deb 文件 https://developer.nvidia.com/deepstream-getting-started

root@xxxx:/workspace/downloads# dpkg -i graph_composer-1.0.0_x86_64.deb 
(Reading database ... 72950 files and directories currently installed.)
Preparing to unpack graph_composer-1.0.0_x86_64.deb ...
SOFTWARE LICENSE AGREEMENT FOR NVIDIA SOFTWARE DEVELOPMENT KITS could not be presented
dpkg: error processing archive graph_composer-1.0.0_x86_64.deb (--install):
 new graph-composer package pre-installation script subprocess returned error exit status 2
Errors were encountered while processing:
 graph_composer-1.0.0_x86_64.deb

我能够在主机上运行相同的 deb 文件。它会在安装开始之前显示一个 GUI 以接受许可证。所以我认为 docker 映像缺少用于显示许可证文件的内容,我尝试过:

  1. 安装 xterm 并检查 x11 是否正常工作,我认为是因为 xterm 出现了
  2. 安装对话框,没有改变任何东西
  3. 在主机上执行 dpkg,效果很好
  4. apt-get update && apt-get install -f debconf它没有做任何事情,debconf 已经是最新版本
  5. debconf-set-selections <<< 'graph-composer deepstream-reference-graphs/present-eula boolean true'这是基于sudo debconf-show graph-composer在主机上运行的。仍然出现同样的错误

答案1

尽管只DEBIAN_FRONTEND=noninteractive在我自己的 Dockerfile 中用作参数,但事实证明,无论是谁准备的,nvcr.io/nvidia/deepstream:6.0.1-triton都已将其添加到 ENV 中

因此解决方案是将其设置为readline

DEBIAN_FRONTEND=readline dpkg -i graph_composer-1.0.0_x86_64.deb 

(安装dialog然后将其设置为dialog也可以。)

感谢用户@AB为我指明了大致的方向

相关内容