Як встановити пакет з apt без підказки "Чи хочете ви продовжити [Y / n]?"?


53

Звичайно, коли ви вводите:

sudo apt-get install whatever

Він запитує вас:

Do you want to continue [Y/n]? 

Чи є спосіб я просто встановити його, не запитуючи мене, чи хочу я продовжувати? Мені не дуже цікаво простір, у мене є більше, ніж достатньо.


Суперкористувач питання superuser.com/questions/164553 / ...
αғsнιη

Відповіді:


87
sudo apt-get install -y whatever

На сторінці man ( man apt-get):

 -y, --yes, --assume-yes

           Automatic yes to prompts; assume "yes" as answer to all prompts and
           run non-interactively. If an undesirable situation, such as
           changing a held package, trying to install a unauthenticated
           package or removing an essential package occurs then apt-get will
           abort. Configuration Item: APT::Get::Assume-Yes.

9
(як небезпечно жити файлом)
user2413

Дуже дякую! Мені справді слід частіше користуватися цією сторінкою. :)
Лука

2
Ось чому вони там @KingShimkus;)
Rinzwind

5
sudo apt-get install - будь що ...
Вершник

Тепер, якщо тільки це працювало на оновлення пакета Docker>. <Якщо ви ніколи не оновлювали Docker раніше, ось зображення того, що спливає в терміналі, навіть коли ви використовуєте --yes: Imgur Це надзвичайно дратує, оскільки це змушує взаємодію під час оновлення пакета. .
Спенсер Д

15

Для влучного отримання -yабо --assume-yesпрацюйте добре (як пояснив @rinzwind), і я припускаю, що це найкраща відповідь тут. Для багатьох таких інтерактивних адміністративних операцій існує аналогічна команда.

Ще один досить загальний спосіб зробити це щось на кшталт:

 $ echo "y" | sudo apt-get install edamame_biscuit

(Якщо edamame-biscuit - це (готовий) пакет, який ви хочете встановити, і "y" вважається законною відповіддю; замініть на "так" або інший текст, якщо потрібно.)

"Особливістю" цього методу є те, що це порушиться, якщо ви неправильно припускаєте лише одну інтерактивну підказку. Якщо є ще кілька потенційно небажаних підказок, на які, можливо, ви не хочете сказати "так", ви уникнете ситуації, коли система прокручується без запитань.


13
Також yes | sudo apt-get install edamame-biscuit. Так - це команда, яка спамує слово "так" на свій вихід. Ви також можете змусити його виводити будь-який інший текст за потребою, див. Сторінку.
Кролтан

14
@Kroltan yesКоманда (за замовчуванням) просто виводить букву з yнаступним новим рядком стільки разів, скільки потрібно для заповнення буфера труби. Щоб насправді надрукувати слово yes, потрібно скористатися командою yes yes.
Джонатан Каллен

3
yes, вибачте мою помилку
Кролтан

4
@Braiam Я думаю, що це було справа, тому він нічого не робить, якщо хтось просто вставляє це в свою оболонку.
Кролтан

2
Мені особливо подобається, що частина "Особливості" цього методу полягає в тому, що це порушиться, якщо ви неправильно припускаєте лише одну інтерактивну підказку ". оскільки спам - так, все може бути надзвичайно небезпечним.
BeowulfNode42

4

Перш за все, давайте зрозуміти, чому повідомлення з’являється. Насправді, якщо пакет не має залежностей, які ви вже не встановили, або ви прямо сказали йому встановити, apt ніколи не запитує вас:

➜  ~  sudo apt-get -qq install xfce4-screenshooter
Selecting previously unselected package xfce4-screenshooter.
(Reading database ... 296146 files and directories currently installed.)
Preparing to unpack .../xfce4-screenshooter_1.8.1-2_amd64.deb ...
Unpacking xfce4-screenshooter (1.8.1-2) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for mime-support (3.56) ...
Setting up xfce4-screenshooter (1.8.1-2) ...

Хоча, якщо ви хочете встановити пакет, який залежить від пакунків, ви не згадали, він попросить:

➜  ~  sudo apt-get -q install avis
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libjzlib-java libmina-java libslf4j-java
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Need to get 720 kB of archives.
After this operation, 1,258 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

І все-таки це не запитає, чи ви також неявно говорите, що хочете встановити цей пакет:

➜  ~  apt-get -q install avis libjzlib-java libmina-java libslf4j-java
Reading package lists...
Building dependency tree...
Reading state information...
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Inst libjzlib-java (1.1.3-1 Debian:testing [all])
Inst libslf4j-java (1.7.7-1 Debian:testing [all])
Inst libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Inst avis (1.2.2-2 Debian:testing [all])
Conf libjzlib-java (1.1.3-1 Debian:testing [all])
Conf libslf4j-java (1.7.7-1 Debian:testing [all])
Conf libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Conf avis (1.2.2-2 Debian:testing [all])

Але, як зробити так, щоб він не запитав тебе остаточно? Через Rizwind відповідь повинна охоплювати спеціальні рішення та сценарії (фактично ця опція більше використовується в сценаріях), ви можете замість цього змінити apt.confфайл і додати:

APT::Get::Assume-Yes

Щось подібного має бути достатньо:

echo 'APT::Get::Assume-Yes;' | sudo tee -a /etc/apt/apt.conf.d/00Do-not-ask

Зауважте, це не дозволить отримати інші більш кричущі підказки, які слід перевірити , як-от:

➜  ~  sudo apt-get install sonar
WARNING: The following packages cannot be authenticated!
  sonar
Install these packages without verification? [y/N] 

Ось чому я не рекомендував би його використовувати yes | ..., оскільки це попередження буде проігноровано.


Для "ПОПЕРЕДЖЕННЯ. Наступні пакети не можна автентифікувати!", Що з цим робити? Я отримую це для зображення Докера ( python:3.6-slim). Чи варто задати для цього окреме запитання?
Мартін Тома

@MartinThoma, як правило, це проблема з неоновленим списком пакунків. Перед установкою запустіть оновлення apt-get. Якщо це повідомлення не видаляє, задайте питання з якомога більше деталей, залежно від того, як ви створили зображення докера.
Брайам

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.