Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

502
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!