Как отвечать на вопросы в графическом интерфейсе readline?

Вопрос или проблема

Кратко: DEBIAN_FRONTEND=noninteractive apt ... -y работает на обычных образах облачного сервера Ubuntu, но не работает на минимальных образах облачного сервера Ubuntu.

Здравствуйте,

Я использовал образ облачного сервера Ubuntu, который запрашивал меня с помощью текстового интерфейса на пурпурном фоне (я полагаю, это называется dialog), и чтобы автоматически ответить на вопросы стандартными ответами, я использовал это, и все работало отлично;

DEBIAN_FRONTEND=noninteractive apt install myPackage -y

Затем недавно я переключился на другой образ Ubuntu (минимальный), который запрашивает меня с помощью черно-белого текстового интерфейса (я полагаю, это называется readline), и вышеуказанная команда просто не отвечает на некоторые вопросы, такие как вопрос да/нет.

Я пробовал разные методы, такие как следующие, но ничего не отвечает на последний вопрос, который задает пакет, а именно вопрос да/нет, и даже в интерактивном интерфейсе я не могу просто нажать enter для ответа да. Он заставляет меня вводить да.
Также вышеуказанная команда все еще выводит черно-белый текстовый интерфейс, даже несмотря на то, что у меня установлен noninteractive.

Методы, которые я пробовал и которые не сработали;

export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical
sudo apt-get install -y myPackage
yes yes | sudo DEBIAN_FRONTEND=noninteractive apt-get install -y myPackage
DEBIAN_FRONTEND=noninteractive /usr/bin/apt-get --option=Dpkg::Options::=--force-confold --option=Dpkg::options::=--force-unsafe-io --assume-yes --quiet install myPackage

Как я могу сделать так, чтобы это работало, чтобы я мог отвечать на вопросы стандартными ответами, не получая запроса?

Ответ или решение

Как ответить на вопросы в интерфейсе readline при установке пакетов в Ubuntu

При работе с различными образами Ubuntu, особенно с серверными версиями, вы можете столкнуться с различными текстовыми интерфейсами, такими как GUI на основе dialog или readline. В вашем случае вы наблюдаете проблемы с установкой пакетов на минимальном серверном образе Ubuntu, где DEBIAN_FRONTEND=noninteractive не даёт ожидаемого результата. В этом ответе мы рассмотрим методы, которые помогут вам автоматизировать процесс установки пакетов в таких условиях.

Проблема

Как вы отметили, при установке пакетов на минимальном образе Ubuntu с использованием команды:

DEBIAN_FRONTEND=noninteractive apt install myPackage -y

вы сталкиваетесь с текстовым интерфейсом readline, который запрашивает явного подтверждения (например, ввод «yes»), игнорируя попытки автоматического ответа.

Разбор предложенных методов

  1. Использование export DEBIAN_FRONTEND=noninteractive и DEBIAN_PRIORITY=critical:
    Эти переменные среды настраивают режим без взаимодействия. Однако, как вы заметили, не все вопросы игнорируются. Обратите внимание, что этот метод зависит от того, как пакеты настроены для обработки таких изменений. Некоторые пакеты могут требовать контроля интерфейса.

  2. Команда yes yes | sudo DEBIAN_FRONTEND=noninteractive apt-get install -y myPackage:
    Эта команда позволяет автоматически вводить «yes». Однако, если пакет активно ожидает ввода, требуется другой подход.

  3. Варианты с использованием --force-confold и --assume-yes:
    Эти опции могут помочь с конфигурационными вопросами, но, судя по вашим отзывам, они не решают проблему с текстовым интерфейсом readline.

Рекомендации для решения проблемы

Для более эффективного обхода проблемы с ответами в текстовом интерфейсе readline, рассмотрите следующие подходы:

  1. Использование debconf-set-selections:
    Вы можете заранее настроить ответ на вопрос, добавив соответствующую конфигурацию в debconf. Например:

    echo "myPackage myPackage/question boolean true" | sudo debconf-set-selections

    Замените myPackage/question на фактический вопрос и true на нужный ответ.

  2. Использование apt-get с конфигурированным предварительным ответом:
    Сначала установите нужные предварительные ответы через debconf, затем выполните установку:

    sudo apt-get install -y myPackage
  3. Изменение режима работы текстового интерфейса:
    В некоторых случаях можно использовать другие рендеры интерфейса. Попробуйте изменить частоту использования интерфейса или вызвать установку с другой средой:

    export DEBIAN_FRONTEND=noninteractive
    export ANSIBLE_FORCE_COLOR=true
    sudo apt-get install -y myPackage
  4. Использование автоматизированных скриптов:
    Если стандартные методы не помогают, возможно, имеет смысл создать автоматизированный скрипт с использованием средств управления конфигурацией, таких как Ansible или Puppet. Эти системы предоставляют средства для управления пакетами в режиме, полностью лишённом нежелательных интерактивных вставок.

Заключение

Для успешной автоматизации установки пакетов в минимальных образах Ubuntu с интерфейсом readline, желательно использовать комбинацию методов: предварительная настройка вопросов через debconf, применение режимов без взаимодействия, а также потенциально использование автоматизированных средств управления конфигурациями. Вместе они помогут вам добиться желаемых результатов и облегчить управление пакетом.

Если у вас возникнут дополнительные вопросы или потребуется более детальное руководство, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...