作者:mobiledu2502912377 | 来源:互联网 | 2022-10-24 13:35
我正在从Dockerfile构建映像,该映像需要安装软件包 rti-connext-dds-5.3.1。(这是在Linux上构建ROS2时的依赖项之一)。
该软件包的问题在于,它显示了一个许可证协议,必须向下滚动该许可证协议,然后在提示上输入“是”以接受该协议。我似乎无法设置Dockerfile命令来自动滚动和/或自动接受此许可协议:
按Enter或Space键不会向下滚动许可证,它只会显示空白行。按下任何其他键只会将其打印到控制台。至此,构建卡住了,无法继续进行。
这是Dockerfile:
FROM ubuntu:bionic
ARG DEBIAN_FROnTEND=noninteractive
# ARG DEBIAN_FROnTEND=teletype
RUN apt-get update && \
apt-get install -y apt-utils debconf-utils gnupg2 lsb-release && \
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 421C365BD9FF1F717815A3895523BAEEB01FA116 && \
echo "deb http://packages.ros.org/ros2/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros2-latest.list && \
apt-get update && \
# echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections && \
# echo "rti-connext-dds-5.3.1 rti-connext-dds-5.3.1/license string y" | debconf-set-selections && \
# echo "rti-connext-dds-5.3.1 rti-connext-dds-5.3.1/license string yes" | debconf-set-selections && \
apt-get install -y rti-connext-dds-5.3.1
# apt-get install -y -q rti-connext-dds-5.3.1
# yes "yes" | apt-get install -y -q rti-connext-dds-5.3.1
WORKDIR /home
从Dockerfile可以看出,我已经尝试过:
DEBIAN_FROnTEND=noninteractive
根据来自的答案设置不同的方式在docker下安装时是否可以回答对话框问题?
DEBIAN_FROnTEND=teletype
根据Docker构建期间如何接受许可协议进行设置?
使用debconf-set-selections
基于apt-get的安装而不使用debconf提示符
管道yes
命令(这更糟,因为我什至无法使用Ctrl+ 中止C)
在安装过程中如何自动滚动和/或自动接受许可证?
1> 小智..:
您可以使用环境变量“ RTI_NC_LICENSE_ACCEPTED =是”。您的dockerfile看起来像这样:
FROM ubuntu:bionic
ARG DEBIAN_FROnTEND=noninteractive
RUN apt-get update && \
apt-get install -y apt-utils debconf-utils gnupg2 lsb-release && \
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 421C365BD9FF1F717815A3895523BAEEB01FA116 && \
echo "deb http://packages.ros.org/ros2/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros2-latest.list && \
apt-get update
RUN RTI_NC_LICENSE_ACCEPTED=yes apt-get install rti-connext-dds-5.3.1
WORKDIR /home