Чому `sudo apt-get install XXXX` іноді вимагає підтвердження, інші - ні?


29

Тільки для цікавості, іноді під час встановлення програмного забезпечення через apt-get install software_nameтермінал запрошують підтвердити "введіть так чи ні", але не завжди.

Я не маю на увазі підказку пароля sudo, але повідомлення "Буде завантажено та зафіксовано XXX Kb, продовжуйте?" (або щось подібне)

Чому?


2
По суті, якщо потрібно встановити пакунки, відмінні від зазначених у аргументах, він запитає.
муру

Відповіді:


24

Зазвичай вас запитають, чи є запропоновані або рекомендовані пакети, які залежать від програмного забезпечення, яке ви намагаєтесь встановити. Це також може залежати від розміру програми або безпеки сховища, з якого ви завантажуєте.


Я думав, що ті ж мотивації .. але я хочу бути захищеним від відповіді
Strae

Так, ця відповідь правильна. Я додам, що ви можете (корисно, якщо ви намагаєтесь щось автоматизувати) використовувати -yпрапор, якщо ви не хочете, щоб вас вимагали.
Умань

@Umang: дякую за підказку, але мені наразі нічого не потрібно автоматизувати, було просто цікавість;)
Strae

12

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

Якщо лише один вказаний вами пакет буде встановлений без додаткових речей, він залишається тихим, оскільки ви вже "підтвердили", що хочете мати його, ввівши його.
Але якщо є деякі пакети залежностей, ви можете змінити свою думку і захочете припинити встановлення (наприклад, тому, що один з них раніше викликав проблеми), тому він запропонує вам ввести n / 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 за допомогу). Знову з прикладом 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 

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


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

@Toroidal зміна коду програми трохи виходить за рамки тут - можливо, вам доведеться зануритися в aptабо apt-getдо манпажів, щоб зрозуміти, як змінити налаштування, оскільки, можливо, вже є налаштування, яке ви можете змінити, щоб примусити його.
Thomas Ward

9

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

Однак можливо застосувати підтвердження для будь-якої команди установки під час використання aptitude.

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

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