Как установить пакет с помощью apt без запроса «Продолжить [Y / n]?»?

55

Конечно, когда вы печатаете:

sudo apt-get install whatever

Он спрашивает вас:

Do you want to continue [Y/n]? 

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

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

Ответы:

89
sudo apt-get install -y whatever

Со страницы руководства ( 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.
Rinzwind
источник
9
(как жить опасно, файл)
user2413
Большое спасибо! Я действительно должен использовать эту справочную страницу чаще. :)
Люк
2
Вот почему они там @KingShimkus;)
Rinzwind
5
sudo apt-get install -yeah что угодно ...
Всадник BoJack
Теперь, если только это работало для обновления пакета Docker>. <Если вы никогда не обновляли Docker прежде, вот изображение того, что всплывает в терминале, даже когда вы используете --yes: Imgur Это чрезвычайно раздражает, так как это вызывает взаимодействие во время обновления пакета ,
Спенсер Д
15

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

Еще один довольно общий способ сделать это что-то вроде:

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

(Где edamame-biscuit - это (готовый) пакет, который вы хотите установить, а «y» считается законным ответом; при необходимости замените его «yes» или другим текстом.)

«Особенностью» этого метода является то, что он сломается, если вы ошибочно принимаете только одну интерактивную подсказку. Если есть еще несколько потенциально нежелательных приглашений, которым вы, возможно, не захотите сказать «да», вы избежите ситуации, когда система будет работать без запроса.

belacqua
источник
13
Также yes | sudo apt-get install edamame-biscuit. Да - это команда, которая выводит слово «да» на свой выход. Вы также можете заставить его выводить любой другой текст по мере необходимости, смотрите man-страницу.
Крольтан,
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 | ..., так как это предупреждение будет проигнорировано.

Braiam
источник
Для «ПРЕДУПРЕЖДЕНИЕ: Следующие пакеты не могут быть аутентифицированы!», Что нужно делать с этим? Я получаю это для изображения Docker ( python:3.6-slim). Должен ли я задать отдельный вопрос для этого?
Мартин Тома
@MartinThoma обычно, это проблема с не обновленным списком пакетов. Запустите apt-get update перед установкой. Если это не удаляет сообщение, задайте вопрос с как можно большим количеством деталей, вплоть до того, как вы создали образ докера.
Брайам