Как ответить на вопросы от apt install, не получая запросов?

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

Я пытаюсь установить пакет без запроса подтверждения. Ответ, который я нашел в интернете, это сделать так, и это прекрасно работает для пакета, который я устанавливаю:

DEBIAN_FRONTEND=noninteractive apt install myPackage -y

Однако недавно я сменил облачного провайдера, и выполнение той же команды на том же сервере Ubuntu 20.04 не дает того же результата. На этот раз она не срабатывает. Я полагаю, что они используют разные версии Ubuntu 20.04 (скорее всего, обычную и минимальную). Под “не срабатывает” я имею в виду, что она все еще запрашивает у меня ввод, даже когда выполняется из bash-скрипта.

Я пробовал разные методы, такие как следующие, но ничего не отвечает на последний вопрос, который задает пакет, а именно простое вопрос “да/нет”, и даже в интерактивном GUI я не могу просто нажать enter, чтобы ответить yes. Это заставляет меня вводить yes. Также вышеприведенная команда по-прежнему запрашивает у меня ввод с помощью черно-белого текстового GUI, даже несмотря на то, что я установил 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

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

Я думаю, что вы должны быть в состоянии просто сделать следующее:

sudo apt install -y myPackage

Я думаю, что любые экспортируемые переменные среды будут сброшены, как только вы войдете в ‘sudo’, так как это другое пространство пользователя.

Похоже на вот это: https://stackoverflow.com/questions/70236670/debian-frontend-noninteractive-not-working-inside-shell-script-with-apt-get

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

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

1. Исполнение команды в неинтерактивном режиме

Основной подход для установки пакетов с использованием apt без интерактивных запросов — это установка переменной окружения DEBIAN_FRONTEND в значение noninteractive. Но обращайте внимание, что правильное применение этого метода имеет свои нюансы.

2. Пробуем различные способы

На практике, если вы столкнулись с проблемой, что переменная окружения не сохраняется при использовании sudo, попробуйте записать полный командный вызов с переменной окружения, как показано ниже:

sudo DEBIAN_FRONTEND=noninteractive apt-get install -y myPackage

Обратите внимание, что переменная DEBIAN_FRONTEND задается непосредственно перед командой apt-get, что гарантирует сохранение ее значения даже при переходе в другую пользовательскую среду (в данном случае — при выполнении через sudo).

3. Настройка Dpkg

Если ваши попытки по-прежнему не работают, возможно, установка пакета требует дополнительных настроек. Попробуйте использовать следующие опции непосредственно с dpkg:

echo "myPackage myPackage/option select yes" | sudo debconf-set-selections

Эта команда позволяет задать стандартное значение для опции конфигурации пакета. После этого попробуйте снова выполнить команду установки:

sudo DEBIAN_FRONTEND=noninteractive apt-get install -y myPackage

4. Устранение GUI-элементов

Если вы по-прежнему получаете текстовые интерфейсы, подобные dialog или whiptail, при установке пакета, вы можете отключить использование GUI-элементов, установив следующие переменные окружения:

export DEBIAN_FRONTEND=noninteractive
export DEBIAN_PRIORITY=critical

Избегайте также использования команд yes, так как они могут не сработать для различных интерактивных форматов. Вместо этого использование debconf-set-selections даст вам большую контроль над процессом.

5. Протестируйте в другой ОС

Если всё вышеперечисленное не помогает, стоит обратить внимание на систему, на которой вы это проверяете. Иногда различные "облегчённые" версии Ubuntu могут включать ограниченные наборы предустановленных конфигураций для apt, которые могут влиять на его поведение. Чтобы проверить это, попробуйте установить другой базовый пакет, например apt-utils, перед установкой необходимого вам пакета.

Заключение

Иногда при переносе конфигураций и скриптов между разными средами могут возникать проблемы, основанные на отличиях в конфигурации или установленных пакетах. Подходите к этой задаче с вниманием и экспериментируйте с вышеуказанными рекомендациями. Удачи в установке пакетов и минимизация запросов на подтверждение!

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

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