Pourquoi 'sudo apt-get install XXXX' demande-t-il parfois une confirmation, d'autres pas?

27

Juste par curiosité, parfois, lors de l’installation du logiciel via apt-get install software_name , le terminal m’a demandé une confirmation "tapez Yes ou No", mais pas toujours.

Je ne parle pas de l’invite du mot de passe sudo, mais le message "Sera téléchargé et confisqué XXX Kb, continue?" (ou quelque chose de similaire)

Pourquoi?

    
posée Strae 23.08.2010 - 07:48
la source

3 réponses

23

Il vous demandera généralement s’il existe un paquet suggéré ou recommandé qui dépend du logiciel que vous essayez d’installer, Cela peut également dépendre de la taille du programme ou de la sécurité du référentiel à partir duquel vous téléchargez.

    
réponse donnée Hellola 23.08.2010 - 08:09
la source
11

apt-get install new-package demandera une confirmation uniquement si elle installe également des dépendances du paquet donné.

Si seul le paquetage unique que vous avez spécifié va être installé sans aucun élément supplémentaire, il reste silencieux car vous avez déjà "confirmé" que vous vouliez le faire en le tapant.
Mais s'il y a des paquets de dépendances, vous pouvez changer d'avis et vouloir arrêter l'installation (par exemple parce que l'un d'entre eux a déjà causé des problèmes), alors il vous demande d'y / ​​n.

Maintenant, si vous voulez voir ce que cela va faire, vous pouvez faire un essai / simulation de la commande d'installation. Vous définissez ce commutateur en ajoutant -s aux arguments. Exemple: Installation du package unique 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])

Cela vous montre ce qui va se passer, mais pas la taille des téléchargements, comme le ferait l’invite de confirmation.

Par conséquent, un autre commutateur peut être utilisé, --print-uris . Le même exemple:

[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

Le commutateur --print-uris bloque non seulement l’installation réelle, mais affiche les tailles téléchargées et installées ainsi que des informations supplémentaires sur le package (adresse Web et MD5Sum).
Attention: n'utilisez pas --print-uris et -s ensemble. Il ressemblera à -s seulement.
Notez également que vous devez ajouter le commutateur -y (= assumer yes à chaque question) si vous souhaitez traiter la sortie, car celle-ci vous invitera à confirmer en suivant les mêmes règles que l'installation normale sans commutateurs.

Maintenant, si vous souhaitez filtrer le téléchargement et installer les informations de taille de fichier uniquement sans avoir à lire toutes les autres choses, vous pouvez utiliser la commande suivante pour y parvenir (grâce à @terdon pour l'assistance). Encore une fois avec l'exemple 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

Vous voyez que la première ligne de la sortie est la taille de téléchargement et la deuxième ligne décrit l’espace nécessaire à l’installation.

Comme cette commande n’est pas facile à taper et même plus difficile à retenir, copiez ce qui suit dans un fichier de script, par ex. appelé 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'oubliez pas de chmod +x apt-install-checker.sh avant de l'exécuter!

Exemple de sortie:

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

Script en cours de développement! Fonctionnalités planifiées: il doit vous demander si vous souhaitez effectuer l’installation, puis continuer et l’exécuter. Peut-être d'autres beaux gadgets qui me viennent à l'esprit demain ...

    
réponse donnée Byte Commander 19.03.2015 - 19:51
la source
8

D'après ce que j'ai compris, apt-get demande une confirmation uniquement lorsqu'il y a des dépendances supplémentaires à installer. Il n'y a aucun moyen de forcer la confirmation par défaut pour tous les packages.

Cependant, il est possible de forcer la confirmation de toute commande d’installation lorsqu’on utilise aptitude.

echo 'Aptitude::CmdLine::Always-Prompt "true";' | sudo tee -a /etc/apt/apt.conf.d/05aptitude
    
réponse donnée komputes 02.12.2010 - 21:13
la source

Lire d'autres questions sur les étiquettes