Почему `sudo apt-get install XXXX` иногда запрашивает подтверждение, другие нет?

Просто для любопытства, иногда при установке программного обеспечения через apt-get install software_name терминал запрашивает у меня подтверждение «Тип Да или Нет», но не всегда.

Я не имею в виду пароль sudo password, но сообщение «Будет загружено и настроено XXX Kb, продолжите?» (или что-то подобное)

Зачем?

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

apt-get install new-package будет запрашивать подтверждение только в том случае, если он также устанавливает зависимости данного пакета.

Если только один пакет, который вы указали, будет установлен без каких-либо дополнительных материалов, он останется тихим, поскольку вы уже «подтвердили», что хотите его получить, набрав его.
Но если есть некоторые пакеты зависимостей, вы можете передумать и захотите остановить установку (например, из-за того, что одна из них вызвала проблему раньше), поэтому она запрашивает у вас / y.

Теперь, если вы хотите посмотреть, что он будет делать, вы можете выполнить симуляцию / симуляцию команды установки. Вы устанавливаете этот переключатель, добавляя -s к аргументам. Пример: установка единого пакета sudoku

 bytecommander@AlkaliMetal:~$ sudo apt-get install sudoku -s Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: sudoku 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Inst sudoku (1.0.1-5 Ubuntu:14.10/utopic [i386]) Conf sudoku (1.0.1-5 Ubuntu:14.10/utopic [i386]) 

Это покажет вам, что произойдет, но не насколько велики будут загрузки, как подскажет подтверждение.

Поэтому может использоваться другой переключатель, --print-uris . Тот же пример:

 bytecommander@AlkaliMetal:~$ sudo apt-get install sudoku --print-uris Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: sudoku 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 28.4 kB of archives. After this operation, 106 kB of additional disk space will be used. 'http://ftp.uni-stuttgart.de/ubuntu/pool/universe/s/sudoku/sudoku_1.0.1-5_i386.deb' sudoku_1.0.1-5_i386.deb 28426 MD5Sum:ecd0e3cd4fc1e4e4edfe6c59d1c54847 

Переключатель --print-uris не только блокирует фактическую установку, но и показывает загруженные и установленные размеры и дополнительную информацию о пакете (веб-адрес и MD5Sum).
Внимание: Не используйте --print-uris и -s вместе. Он будет выглядеть как -s .
Заметим также, что вы должны добавить ключ -y (= принять да для каждого вопроса), если вы хотите обработать вывод, потому что этот запрос будет запрашивать подтверждение по тем же правилам, что и обычная установка без коммутаторов.


Теперь, если вы хотите отфильтровать информацию о загружаемом и установленном размере файла без необходимости читать все другие вещи, для достижения этой цели вы можете использовать следующую команду (благодаря @terdon для оказания помощи). Опять с примером sudoku :

 bytecommander@AlkaliMetal:~$ LANG=C sudo apt-get -y --print-uris install sudoku | grep -Po '^(Need to|After this).*?\K[0-9.]+[ a-zA-Z]+? ' 28.4 kB 106 kB 

Вы видите, что первая строка вывода – это размер загрузки, а вторая строка описывает пространство, необходимое для установки.

Поскольку эту команду не так просто напечатать и еще сложнее запомнить, скопируйте следующее в файл сценария, например, apt-get-install-checker.sh :

 #! /bin/bash LANG=C sudo apt-get install -y --print-uris $* | grep -Po '^(Need to|After this).*?\K[0-9.]+[ a-zA-Z]+? ' | sed '1,1s/^/Download size: /;2,2s/^/Installed size: /' 

Не забудьте chmod +x apt-install-checker.sh перед тем, как выполнить его!

Пример вывода:

 bytecommander@AlkaliMetal:~/bin$ ./apt-install-checker.sh sudoku Download size: 28.4 kB Installed size: 106 kB 

Сценарий еще в разработке! Запланированные функции: он должен спросить вас, хотите ли вы выполнить установку, а затем продолжить и запустить. Может быть, некоторые другие приятные гаджеты, которые приходят мне в голову завтра …

Из того, что я понимаю, apt-get запрашивает подтверждение только при наличии дополнительных зависимостей для установки. Невозможно принудительно подтвердить подтверждение по умолчанию для всех пакетов.

Однако при использовании aptitude возможно принудительное подтверждение любой команды установки.

 echo 'Aptitude::CmdLine::Always-Prompt "true";' | sudo tee -a /etc/apt/apt.conf.d/05aptitude