Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

500
Vistas
¿Cómo aceptar el acuerdo de licencia al compilar rti-connext-dds-5.3.1 con docker build?

Estoy creando una imagen a partir de un Dockerfile que necesita instalar el paquete rti-connext-dds-5.3.1 . (Es una de las dependencias al compilar ROS2 en Linux ).

El problema con ese paquete es que muestra un acuerdo de licencia que debe desplazarse hacia abajo y luego aceptarse ingresando "sí" en el mensaje. Parece que no puedo configurar los comandos de Dockerfile para desplazarse automáticamente y/o aceptar automáticamente este acuerdo de licencia:

acuerdo de licencia

Presionar la tecla Enter o Space no desplaza la licencia hacia abajo, solo muestra líneas en blanco. Presionar cualquier otra tecla/s simplemente lo imprime en la consola. En este punto, la compilación está atascada y no puede continuar.

Aquí está el 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 && \ apt-get install -y rti-connext-dds-5.3.1 WORKDIR /home

Ya probé:

  • Establecer DEBIAN_FRONTEND=noninteractive de diferentes maneras en función de las respuestas de ¿Es posible responder preguntas de diálogo al instalar en Docker?
  • Configuración DEBIAN_FRONTEND=teletype basado en ¿Cómo aceptar el acuerdo de licencia durante la compilación de la ventana acoplable?
  • Uso debconf-set-selections basado en apt-get install sin indicador de debconf
     # 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 && \
  • Canalizando el comando yes (esto es peor, ya que ni siquiera puedo abortar con Ctrl + C )
     # apt-get install -y -q rti-connext-dds-5.3.1 # yes "yes" | apt-get install -y -q rti-connext-dds-5.3.1

¿Cómo desplazo y/o acepto automáticamente la licencia durante la instalación?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Puede usar la variable env "RTI_NC_LICENSE_ACCEPTED=yes". Su dockerfile se verá así:

 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
over 4 years ago · Santiago Trujillo Denunciar

0

Esta es una respuesta válida, pero definitivamente no es la mejor. Actualmente estoy usando la versión de prueba de DDS que NO le permite aceptar automáticamente la licencia. Así que mi trabajo fue hacer lo siguiente:

Primero instalé el comando expect que le permite escribir scripts que interactuarán y decir presione enter 21 veces y luego la letra y , etc.

Además, hay un comando llamado autoexpect que generará un script para usted. Entonces mis pasos son:

  1. Inicie un contenedor básico y copie sobre rti_connext_dds-6.0.1-eval-x64Linux4gcc7.3.0.run , o monte el archivo localmente

  2. Ejecute autoexpect ./rti_connext_dds-6.0.1-eval-x64Linux4gcc7.3.0.run que generará script1.exp .

  3. Ahora cree un contenedor real que copie el archivo de instalación, así como el script esperado y haga lo siguiente:

 ARG RTI_INSTALL_FILE=rti_connext_dds-6.0.1-eval-x64Linux4gcc7.3.0.run RUN chmod +x /rti/${RTI_INSTALL_FILE} && expect /rti/script.exp

El mejor camino, por supuesto, es hacer lo que se sugirió anteriormente; sin embargo, para saber más sobre Docker expect es un gran truco.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda