なぜ `sudo apt-get install XXXX`が確認を要求するのか、そうでないのか?


29

好奇心だけのために、時々ソフトウェアをインストール中にapt-get install software_name、ターミナルは「はいまたはいいえを入力してください」という確認を求めますが、常にそうではありません。

私はsudoパスワードプロンプトを意味しませんが、「XXX Kbをダウンロードして構成します。続行しますか?」(または同様のもの)

どうして?


2
基本的に、引数に記載されているパッケージ以外のパッケージをインストールする必要がある場合、要求されます。
ムル

回答:


24

通常、インストールしようとしているソフトウェアに依存する提案または推奨パッケージがあるかどうかを尋ねられます。また、プログラムのサイズまたはダウンロード元のリポジトリのセキュリティにも依存する場合があります。


私は同じ動機を考えた..しかし、答えを確保したい
ストレ

はい、この答えは正しいです。-yプロンプトを表示したくない場合は、フラグを使用できます(何かを自動化する場合に便利です)。
ウマン

@Umang:ヒントをありがとう、しかし今のところ何も自動化する必要はない、ただの好奇心だった;)
Strae

12

apt-get install new-package 指定されたパッケージの依存関係もインストールする場合にのみ確認を求めます。

指定した単一のパッケージだけを追加のものなしでインストールする場合、それを入力して既に「確認」しているので、それは静かなままです。
ただし、いくつかの依存パッケージがある場合は、気が変わってインストールを停止したい場合があります(たとえば、以前に問題が発生したため)。y/ 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スイッチは、実際にはインストールブロックが、ダウンロードとインストールのサイズとパッケージについての追加情報(Webアドレスとのmd5sum)が表示されません。
注意:Doが使用していない--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

出力の1行目はダウンロードサイズであり、2行目はインストールに必要なスペースを示していることがわかります。

このコマンドは入力するのが簡単ではなく、覚えるのがさらに難しいため、次のようなスクリプトファイルにコピーします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それが可能だとして、あなたがそれを強制的に変更することができます設定が既にあります、環境設定を変更する方法を見つけ出すにはmanページをさん。
トーマスウォード

9

私が理解していることから、apt-getはインストールする追加の依存関係がある場合にのみ確認を求めます。すべてのパッケージに対してデフォルトで確認を強制する方法はありません。

ただし、aptitudeを使用する場合、インストールコマンドで確認を強制することができます。

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

または、aptitude特定の実行時にプロンプ​​トを表示するには、を使用しますaptitude -P
エリアケイガン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.