Автоматический ответ на несколько запросов команды bash в (Bash / Docker RUN) не интерактивно - PullRequest
4 голосов
/ 05 августа 2020

Существуют способы автоматического ответа -y в командах bash, например, например,

RUN apt-get install -y nodejs

, но у меня есть этот случай, я хочу запустить

 dpkg --install someDebianpackage.deb && apt install --assume-yes --fix-broken

На самом деле отвечает y на мгновенный запрос, данный им, но на более позднем этапе он просит меня настроить географию i c с ответом 6

enter image description here

and after that again I want to answer the command with 20 for the city corresponding to timezone

введите описание изображения здесь

, а затем снова с ответом 31, а затем 1, как указано выше, для разных вопросов.

Я хочу знать, что нужно запускать эту команду как одну команду в неинтерактивном путь. (Я надеюсь создать docker файл и поместить указанную выше команду вместе с некоторыми другими командами, которые можно связать с && в Команда RUN например, как

RUN apt-get update && apt-get install sudo && "the above command along with their answers" && "some other command"

Я был бы очень признателен за некоторые рекомендации по этому

1 Ответ

4 голосов
/ 06 августа 2020

Технически вы можете автоматически отвечать на запросы с помощью такого инструмента, как ожидать . Однако обычно это намного сложнее, чем заставить программу перестать задавать вам вопросы.

Я не уверен, почему apt запрашивает ваш часовой пояс, но я подозреваю, что вы каким-то образом втягиваете пакет tzdata, который хочет настроить ваш часовой пояс. Чтобы избежать этих вопросов, вы должны установить неинтерактивный интерфейс:

Чтобы запустить dpkg (за другими инструментами, такими как Apt) без интерактивного диалога, вы можете установить одну переменную среды как

DEBIAN_FRONTEND=noninteractive

( Источник .)

В Dockerfile вы можете установить переменную среды следующим образом:

ENV DEBIAN_FRONTEND=noninteractive
...