Mengapa `sudo apt-get install XXXX` terkadang meminta konfirmasi, yang lain tidak?

29

Hanya untuk rasa ingin tahu, kadang-kadang saat menginstal perangkat lunak melalui apt-get install software_nameterminal meminta saya untuk konfirmasi "ketik Ya atau Tidak", tetapi tidak selalu.

Maksud saya bukan kata sandi sudo, tetapi pesan "Akan diunduh dan dikonfigurasi XXX Kb, lanjutkan?" (atau yang serupa)

Mengapa?

Strae
sumber
2
Pada dasarnya, jika paket selain yang disebutkan dalam argumen perlu diinstal, itu akan bertanya.
muru

Jawaban:

24

Biasanya akan bertanya apakah ada paket yang disarankan atau direkomendasikan yang tergantung pada perangkat lunak yang Anda coba instal, Mungkin juga tergantung pada ukuran program atau keamanan repositori yang Anda unduh.

Hellola
sumber
Saya pikir motivasi yang sama .. tetapi saya ingin aman dari jawabannya
Strae
Ya, jawaban ini benar. Saya akan menambahkan bahwa Anda dapat (berguna jika Anda mencoba mengotomatisasi sesuatu) menggunakan -ybendera jika Anda tidak ingin diminta.
Umang
@Umang: terima kasih atas petunjuknya, tetapi saya tidak perlu mengotomatisasi apa pun saat ini, hanya rasa ingin tahu;)
Strae
12

apt-get install new-package akan meminta konfirmasi hanya jika ia juga menginstal dependensi dari paket yang diberikan.

Jika hanya satu paket yang Anda tentukan akan diinstal tanpa hal-hal tambahan, itu tetap diam karena Anda sudah "mengonfirmasi" Anda ingin memilikinya dengan mengetiknya.
Tetapi jika ada beberapa paket dependensi, Anda mungkin berubah pikiran dan ingin menghentikan instalasi (misalnya karena salah satu dari mereka menyebabkan masalah sebelumnya), jadi itu meminta Anda untuk y / n.

Sekarang jika Anda ingin melihat apa yang akan dilakukan, Anda dapat melakukan dry-run / simulasi dari perintah install. Anda mengatur sakelar ini dengan menambahkan -sargumen. Contoh: Instalasi paket tunggalsudoku

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

Itu menunjukkan kepada Anda apa yang akan terjadi, tetapi tidak seberapa besar unduhan akan terjadi, seperti yang akan dilakukan konfirmasi konfirmasi.

Oleh karena itu, switch lain dapat digunakan --print-uris,. Contoh yang sama:

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

The --print-urissaklar tidak hanya akan memblokir instalasi yang sebenarnya, tetapi menunjukkan ukuran didownload dan diinstal dan informasi tambahan tentang paket (alamat web dan md5sum).
Perhatian: Jangan gunakan --print-uris dan -s bersama - sama. Itu akan terlihat seperti -ssaja.
Perhatikan juga bahwa Anda harus menambahkan -ysakelar (= asumsikan ya untuk setiap pertanyaan) jika Anda ingin memproses keluaran, karena yang ini akan meminta Anda untuk konfirmasi mengikuti aturan yang sama seperti pemasangan normal tanpa sakelar.


Sekarang jika Anda ingin menyaring unduhan dan informasi ukuran file yang terinstal hanya tanpa harus membaca semua hal lain, Anda dapat menggunakan perintah berikut untuk mencapai ini (terima kasih kepada @terdon untuk bantuannya). Lagi dengan contoh 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

Anda melihat bahwa baris pertama dari output adalah ukuran unduhan dan baris kedua menjelaskan ruang yang dibutuhkan untuk instalasi.

Karena perintah ini tidak mudah untuk diketik dan bahkan lebih sulit untuk diingat, salin yang berikut ke dalam file skrip misalnya disebut 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: /'

Jangan lupa chmod +x apt-install-checker.shsebelum Anda menjalankannya!

Contoh output:

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

Script masih dalam pengembangan! Fitur yang direncanakan: Ini akan menanyakan Anda apakah Anda ingin melakukan instalasi dan kemudian melanjutkan dan menjalankannya. Mungkin beberapa gadget bagus yang masuk ke pikiran saya besok ...

Komandan Byte
sumber
Tetapi apakah ada cara untuk meminta Anda setiap saat? Bahkan dengan mengubah kode program yang sebenarnya.
@Toroidal mengubah kode program sedikit di luar ruang lingkup di sini - Anda mungkin harus menggali ke dalam aptatau apt-gethalaman manual untuk mengetahui cara mengubah preferensi, karena mungkin ada pengaturan yang dapat Anda ubah untuk memaksakannya.
Thomas Ward
9

Dari apa yang saya mengerti apt-get meminta konfirmasi hanya ketika ada dependensi tambahan untuk diinstal. Tidak ada cara untuk memaksa konfirmasi secara default untuk semua paket.

Namun, dimungkinkan untuk memaksa konfirmasi pada perintah instal apa pun saat menggunakan aptitude.

echo 'Aptitude::CmdLine::Always-Prompt "true";' | sudo tee -a /etc/apt/apt.conf.d/05aptitude
komputes
sumber
Atau, untuk mendapatkan aptitudeprompt pada menjalankan tertentu, gunakan aptitude -P.
Eliah Kagan