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

Возможно, во время установки просто что-то пошло не так. Я использую Sublime Text 2 12.04, и ему не нужно sudo. Я предлагаю вам ввести sudo apt-get purge sublime-text в терминал (зависит от того, какую версию вы установили. Используйте клавишу табуляции после того, как набрали строку до «подрезания» дважды - каждая установленная версия будет отображаться). Это полностью удалит установку. После этого перейдите на домашнюю страницу с возвышенным текстом и убедитесь, что вы загрузили пакет .deb. Просмотрите пакет в Nautilus (домашняя папка), щелкните правой кнопкой мыши на .deb-пакете и выберите «открыть с помощью Software Center». В Центре программного обеспечения щелкните по установке и следуйте инструкциям. После этого вы сможете запустить приложение без sudo.

1
задан 5 August 2014 в 10:35

2 ответа

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

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

Поскольку эту команду не так просто напечатать и даже сложнее запомнить, скопируйте следующее в файл сценария, например [!]

:

#! /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 

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

11
ответ дан 29 May 2018 в 12:41
  • 1
    Но есть ли способ заставить его каждый раз спрашивать вас? Даже путем изменения фактического кода программы. – Paranoid Panda 19 March 2015 в 22:53
  • 2
    @ Тороидальное изменение кода программы немного за пределами области действия здесь - вам, возможно, придется выкапывать в man-файлы apt или apt-get, чтобы выяснить, как изменить настройки, так как возможно, что уже есть настройка, которую вы можете изменить на заставить его. – Thomas Ward♦ 19 March 2015 в 22:58

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

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

echo 'Aptitude::CmdLine::Always-Prompt "true";' | sudo tee -a /etc/apt/apt.conf.d/05aptitude
8
ответ дан 29 May 2018 в 12:41
  • 1
    Или, чтобы получить aptitude для запроса на конкретный прогон, используйте aptitude -P. – Eliah Kagan 10 May 2015 в 18:26

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

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