Автоматично дайте відповідь "Так" під час використання apt-get install


356

Чи є спосіб apt-get installвідповісти "так" на "Ви хочете продовжити [y / N]?"?

Відповіді:



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 в моєму зображенні debian.
Леннарт Ролланд

13
Будь ласка, ніколи не використовуйте --force-yes: оскільки ця відповідь на пов'язану тему наdebian-devel пропозиції --force-yesможе зробити систему непридатною. (Я не заперечую, тому що відповідь насправді вирішує проблему, про яку йдеться в ОП, але я все-таки додати до відповіді
ВЕЛИЧЕ ЧЕРВНЕ

7
APT :: Get :: Припустимо-так "вірно"; допомогло мені уникнути перерви в установці в докер-контейнер.
Мехді Садегі

3
сила-так присуджена 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, у мене все ще з'являються запитання, чи хочу я перезапустити послуги. Мені це було потрібно, щоб повністю усунути всі підказки.
wisbucky

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

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

Це має бути принаймні /etc/apt/apt.confі прокоментовано. Я переживаю, що Ubuntu приймає Microsoft, коли завжди просить дозволу.

"Ви впевнені?", Звичайно, я впевнений, що я не навчена мавпа, яка просто набирає клавіатуру, клацаючи щасливою.

Далі двері запитають: "Ви впевнені, що хочете вийти на вулицю?"
Піч запитає: "Ви впевнені, що хочете готувати?"
Автомобіль запитає: "Ви впевнені, що хочете застосувати гальмо?"
Вогнегасник запитає: "Ви впевнені, що хочете гасити пожежу?"
Мені шкода, Дейв, я не можу дозволити вам це зробити.
HAL9000 може використати скорочення, але дані не могли чи не могли.


3
Різниця з HAL9000 та dpkg, які просять дозволу, полягає в тому, що HAL сказав "ні, період", тоді як річ "Так, роби так, як я кажу" з'являється лише в тому випадку, якщо ти збираєшся повністю і повністю зламати систему. Якщо це те, що ви хочете, обов'язково, продовжуйте. Але мати попередження в цьому випадку здається розумним.
Wouter Verhelst


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

2
+1, але навіщо updateпотрібен дозвіл?
amyassin

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

3

як правило, варіанти з посібника повинні працювати добре

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

якщо це не вдається, ви можете спробувати скористатися yesкомандою.

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

використовував це з моїм бродячим сценарієм надання оболонки

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

Я шукав спосіб вибору невиконання за замовчуванням у скрипті, зокрема при встановленні проводів, і в кінцевому підсумку використовував 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.