Автоматический ответ «Да» при использовании apt-get install


356

Есть ли способ apt-get installответить «да» на «Хотите продолжить [да / нет]?»?

Ответы:



175

Проблема с:

apt-get --yes install $something

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

apt-get --yes --force-yes install $something

Если вы хотите, чтобы эти настройки были постоянными, создайте файл в /etc/apt/apt.conf.d/, например /etc/apt/apt.conf.d/90forceyes, со следующим содержимым:

APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";

3
+1 за разнообразие. Все -yстановилось скучно. (Плюс, это более полный ответ.)
Деннис Уильямсон

1
Будет ли это работать, когда будет написано «Чтобы продолжить, напишите фразу« Да, делайте, как я говорю! »»? Если нет, то каков обходной путь тогда? Я сталкиваюсь с этим, когда пытаюсь заменить sysvinit на systemd в моем chroot-образе debian.
Леннарт Роллан

13
Пожалуйста, никогда не используйте --force-yes: как подсказывает этот ответ связанной веткеdebian-devel , система --force-yesможет стать непригодной для использования. (Я не понижаю голос, потому что ответ на самом деле решает проблему, как указано ОП, но я все равно добавлю БОЛЬШОЕ КРАСНОЕ ПРЕДУПРЕЖДЕНИЕ к ответу.)
kostix

7
APT :: Get :: Assume-Yes "true"; помог мне избежать прерывания при установке в докер-контейнер.
Мехди Садеги

3
force-yes устарела. tracker.mender.io/browse/CFE-2360
rrawat

53

Обратите внимание, что если вы также хотите автоматически переходить к ответам по умолчанию при появлении интерактивного приглашения, вы можете использовать DEBIAN_FRONTEND=noninteractive

Однократная установка:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install [packagename]

Например:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postfix

Все обновления:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y update 

Вы можете настроить более точные параметры с помощью -o Dpkg::Options::="--force-confdef"и -o Dpkg::Options::="--force-confold".

Примеры:

apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"

или же

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

Пример интерактивного приглашения:

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

Интересное чтение: Выполните автоматическую установку пакета Debian


1
Отличный ответ. Даже при том -y, что я все еще получал подсказки, спрашивающие, хочу ли я перезапустить сервисы. Мне нужно было это полностью исключить все подсказки.
Висбуки

14
APT::Get::Assume-Yes "true";

APT::Get::force-yes "true";

По крайней мере, это должно быть /etc/apt/apt.confзакомментировано. Я волнуюсь, что Ubuntu берет на себя обязательство Microsoft всегда просить разрешения.

«Вы уверены?», Конечно, я уверен, что я не тренированная обезьяна, просто печатающая на клавиатуре, щелкая счастливым.

Затем дверь спросит: «Вы уверены, что хотите выйти на улицу?»
Духовка спросит: «Ты уверен, что хочешь готовить?»
Автомобиль спросит: «Вы уверены, что хотите применить тормоза?»
Огнетушитель спросит: «Вы уверены, что хотите потушить огонь?»
Прости, Дейв, я не могу позволить тебе сделать это.
HAL9000 может использовать сжатие, но Data не может или не может.


3
Различие между HAL9000 и dpkg, запрашивающим разрешение, состоит в том, что HAL сказал «нет, точка», тогда как «Да, делай, как я говорю» появляется, только если вы собираетесь полностью и полностью сломать вашу систему. Если это то, что вы хотите, конечно, продолжайте. Но предупреждение в этом случае кажется разумным.
Воутер Верхелст


7
apt-get -y update
apt-get -y install [package]

2
+1, но зачем updateнужно разрешение?
amyassin

@amyassin apt-get updateкоманде требуются права root, поскольку она обновляет локальные списки пакетов (индексы), которые являются системными файлами, принадлежащими root.
jjmontes

3

как правило, параметры из руководства должны работать хорошо

apt-get -y --force-yes install package

если это не удалось, вы можете попробовать использовать yesкоманду.

yes | apt-get -y --force-yes install package

действительно использовал это с моим сценарием подготовки оболочки vagrant

PS: если вы хотите неинтерактивный, но с общим утверждением нет, то вы можете попробовать это:

yes no | apt-get install package


1

Если вы всегда хотите аргумент -y, я бы посоветовал добавить строку

alias apt-get='apt-get -y' #Automatic -y argument on apt-get commands

в ваш .bashrc. Это, как объясняется в комментарии, автоматически добавит аргумент -y ко всем вашим командам apt-get и, следовательно, одобрит все загрузки.


ПРИМЕЧАНИЕ. Это останется верным до тех пор, пока вы не вернете свой .bashrc и не перезапустите оболочку.


1

Я искал способ выбрать нестандартный сценарий, особенно при установке wireshark, и в итоге использовал tmux для взаимодействия с оболочкой, как показано ниже:

# Start a detached root session
sudo tmux new-session -d
# Send the command
sudo tmux send-keys "DEBIAN_FRONTEND=readline apt-get -qq install wireshark-common; exit" enter
# Wait for the tmux session to get to the interactive stage
sleep 5
# Answer the question
sudo tmux send-keys "yes" enter
# Now attach to the session so we wait for command completion
sudo tmux attach
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.