使用docker build构建rti-connext-dds-5.3.1时如何接受许可协议?

Gin*_*pin 6 installation apt-get data-distribution-service docker dockerfile

我正在从Dockerfile构建映像,该映像需要安装软件包 rti-connext-dds-5.3.1。(这是在Linux上构建ROS2时的依赖项之一)。

该软件包的问题在于,它显示了一个许可证协议,必须向下滚动该许可证协议,然后在提示上输入“是”以接受该协议。我似乎无法设置Dockerfile命令来自动滚动和/或自动接受此许可协议:

许可协议

EnterSpace键不会向下滚动许可证,它只会显示空白行。按下任何其他键只会将其打印到控制台。至此,构建卡住了,无法继续进行。

这是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
Run Code Online (Sandbox Code Playgroud)

从Dockerfile可以看出,我已经尝试过:

在安装过程中如何自动滚动和/或自动接受许可证?

小智 5

您可以使用环境变量“ 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
Run Code Online (Sandbox Code Playgroud)