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

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

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

Почему?

30
задан 5 August 2014 в 09:35

3 ответа

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

25
ответ дан 5 August 2014 в 09:35

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

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

echo 'Aptitude::CmdLine::Always-Prompt "true";' | sudo tee -a /etc/apt/apt.conf.d/05aptitude
10
ответ дан 5 August 2014 в 09:35

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

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

Теперь, если вы хотите узнать, что это подойдет, вы можете выполнить пробный запуск / моделирование команды установки. Вы устанавливаете этот переключатель, добавляя к аргументам -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 за помощь).Снова рассмотрим пример судоку :

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 

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

14
ответ дан 5 August 2014 в 09:35

Другие вопросы по тегам:

Похожие вопросы: