Por que 'sudo apt-get install XXXX' às vezes solicita confirmação, outros não?

27

Apenas por curiosidade, algumas vezes ao instalar o software através de apt-get install software_name o terminal me pede uma confirmação "digite Sim ou Não", mas não sempre.

Eu não quero dizer o prompt de senha do sudo, mas a mensagem "Será baixado e configerado XXX Kb, continuar?" (ou algo similar)

Por quê?

    
por Strae 23.08.2010 / 07:48

3 respostas

23

Geralmente, perguntará se há algum pacote sugerido ou recomendado que dependa do software que você está tentando instalar, Pode também depender do tamanho do programa ou segurança do repositório do qual você está baixando.

    
por Hellola 23.08.2010 / 08:09
11

apt-get install new-package pedirá confirmação apenas se também instalar dependências do pacote fornecido.

Se apenas o único pacote que você especificou for instalado sem nenhum material adicional, ele permanecerá quieto, pois você já "confirmou" que deseja digitá-lo.
Mas, se houver alguns pacotes de dependência, você pode mudar de ideia e querer interromper a instalação (por exemplo, porque um deles causou problemas antes), por isso, solicita o número y / n.

Agora, se você quiser ver o que vai fazer, você pode fazer um dry-run / simulação do comando install. Você define essa opção adicionando um -s aos argumentos. Exemplo: Instalação do pacote único sudoku

[email protected]:~$ 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])

Isso mostra o que acontecerá, mas não o tamanho dos downloads, como o prompt de confirmação faria.

Portanto, outro switch pode ser usado, --print-uris . O mesmo exemplo:

[email protected]:~$ 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

A opção --print-uris não só bloqueará a instalação real, mas mostrará os tamanhos baixados e instalados e informações adicionais sobre o pacote (endereço da Web e MD5Sum). Atenção: não use --print-uris e -s juntos. Ele será parecido com -s .
Note também que você deve adicionar o parâmetro -y (= assume sim para cada questão) se você quiser processar a saída, porque este irá solicitar sua confirmação seguindo as mesmas regras que a instalação normal sem switches.

Agora, se você quiser filtrar o download e as informações de tamanho de arquivo instaladas somente sem ter que ler todas as outras coisas, você pode usar o seguinte comando para conseguir isso (graças ao @terdon para auxiliar). Novamente com o exemplo sudoku :

[email protected]:~$ 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

Você vê que a primeira linha da saída é o tamanho do download e a segunda linha descreve o espaço necessário para a instalação.

Como esse comando não é fácil de digitar e ainda mais difícil de lembrar, copie o seguinte em um arquivo de script, por exemplo, chamado 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: /'

Não se esqueça de chmod +x apt-install-checker.sh antes de executá-lo!

Exemplo de saída:

[email protected]:~/bin$ ./apt-install-checker.sh sudoku
Download size: 28.4 kB 
Installed size: 106 kB 

Script ainda em desenvolvimento! Recursos planejados: ele deve perguntar se você deseja executar a instalação, continuar e executá-la. Talvez outros gadgets legais que me venham à mente amanhã ...

    
por Byte Commander 19.03.2015 / 19:51
8

Pelo que entendi, o apt-get pede confirmação apenas quando há dependências adicionais para instalar. Não há como forçar a confirmação por padrão para todos os pacotes.

No entanto, é possível forçar a confirmação de qualquer comando de instalação ao usar o aptitude.

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