Perché `sudo apt-get install XXXX` a volte richiede una conferma, altri no?


29

Solo per curiosità, a volte durante l'installazione del software attraverso apt-get install software_nameil terminale mi viene richiesta una conferma "digitare Sì o No", ma non sempre.

Non intendo la richiesta della password sudo, ma il messaggio "Verrà scaricato e configrato XXX Kb, continua?" (o qualcosa di simile)

Perché?


2
In sostanza, se è necessario installare pacchetti diversi da quelli menzionati negli argomenti, verrà richiesto.
Muru,

Risposte:


24

Di solito ti chiederà se ci sono pacchetti suggeriti o consigliati che dipendono dal software che stai tentando di installare, Potrebbe anche dipendere dalle dimensioni del programma o dalla sicurezza del repository da cui stai scaricando.


ho pensato le stesse motivazioni .. ma voglio essere sicuro della risposta
Strae

Sì, questa risposta è corretta. Aggiungerò che puoi (utile se stai cercando di automatizzare qualcosa) usare il -yflag se non vuoi che ti venga richiesto.
Umang,

@Umang: grazie per il suggerimento, ma non ho bisogno di automatizzare nulla al momento, era solo una curiosità;)
Strae

12

apt-get install new-package chiederà conferma solo se installa anche dipendenze del pacchetto specificato.

Se solo il singolo pacchetto specificato verrà installato senza roba aggiuntiva, rimarrà silenzioso poiché hai già "confermato" che vuoi averlo digitandolo.
Ma se ci sono alcuni pacchetti di dipendenze, potresti cambiare idea e voler interrompere l'installazione (ad es. Perché uno di loro ha causato problemi in precedenza), quindi ti chiede di sì.

Ora, se vuoi vedere cosa farà, puoi eseguire una simulazione a secco / simulazione del comando install. È possibile impostare questa opzione aggiungendo un -sagli argomenti. Esempio: installazione del singolo pacchettosudoku

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])

Questo ti mostra cosa accadrà, ma non quanto saranno grandi i download, come farebbe il prompt di conferma.

Pertanto, un altro interruttore può essere utilizzato, --print-uris. Lo stesso esempio:

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

Lo --print-urisswitch non bloccherà solo l'installazione effettiva, ma mostrerà le dimensioni scaricate e installate e ulteriori informazioni sul pacchetto (indirizzo web e MD5Sum).
Attenzione: non usare --print-uris e -s insieme. Sembrerà -ssolo.
Si noti inoltre che è necessario aggiungere l' -yopzione (= assumere sì a ogni domanda) se si desidera elaborare l'output, poiché questo richiederà la conferma seguendo le stesse regole dell'installazione normale senza opzioni.


Ora se vuoi filtrare il download e le informazioni sulla dimensione del file installato solo senza dover leggere tutte le altre cose, puoi usare il seguente comando per raggiungere questo obiettivo (grazie a @terdon per l'assistenza). Ancora con l'esempio 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

Si vede che la prima riga dell'output è la dimensione del download e la seconda riga descrive lo spazio necessario per l'installazione.

Poiché questo comando non è facile da digitare e ancora più difficile da ricordare, copiare quanto segue in un file di script, ad esempio chiamato 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: /'

Non dimenticare di chmod +x apt-install-checker.shprima di eseguirlo!

Esempio di output:

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

Script ancora in sviluppo! Funzionalità pianificate: dovrebbe chiederti se desideri eseguire l'installazione, quindi continuare ed eseguirla. Forse alcuni altri simpatici gadget che mi vengono in mente domani ...


Ma c'è un modo per farti chiedere ogni volta? Anche modificando il codice effettivo del programma.

@Toroidal modificare il codice del programma è un po 'al di fuori del campo di applicazione qui - potrebbe essere necessario scavare apto apt-get's pagine di manuale per capire come cambiare le preferenze, come è possibile che ci sia già un ambiente si può cambiare per forzarlo.
Thomas Ward

9

Da quello che ho capito apt-get chiede conferma solo quando ci sono dipendenze aggiuntive da installare. Non è possibile forzare la conferma per impostazione predefinita per tutti i pacchetti.

Tuttavia, è possibile forzare la conferma su qualsiasi comando di installazione quando si utilizza aptitude.

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

Oppure, per ottenere aptitudeuna richiesta specifica su una corsa, utilizzare aptitude -P.
Eliah Kagan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.