Bagaimana cara menginstal paket dengan apt tanpa prompt “Apakah Anda ingin melanjutkan [Y / n]?”?

55

Tentu saja saat Anda mengetik:

sudo apt-get install whatever

Ia bertanya kepada Anda:

Do you want to continue [Y/n]? 

Apakah ada cara saya dapat menginstalnya tanpa menanyakan apakah saya ingin melanjutkan? Saya tidak terlalu peduli dengan ruang, saya memiliki lebih dari cukup.

Luke
sumber
superuser question superuser.com/questions/164553/…
αғsнιη

Jawaban:

89
sudo apt-get install -y whatever

Dari halaman manual ( man apt-get):

 -y, --yes, --assume-yes

           Automatic yes to prompts; assume "yes" as answer to all prompts and
           run non-interactively. If an undesirable situation, such as
           changing a held package, trying to install a unauthenticated
           package or removing an essential package occurs then apt-get will
           abort. Configuration Item: APT::Get::Assume-Yes.
Rinzwind
sumber
9
(cara hidup file berbahaya)
user2413
Terima kasih banyak! Saya benar-benar harus menggunakan halaman manual itu lebih sering. :)
Luke
2
Itulah sebabnya mereka ada di sana @ KingShimkus;)
Rinzwind
5
sudo apt-get install -yeah anything ...
BoJack Horseman
Sekarang jika ini hanya berfungsi untuk meningkatkan paket Docker>. <Jika Anda belum pernah meningkatkan Docker sebelumnya, berikut adalah gambar apa yang muncul di terminal bahkan ketika Anda menggunakan --yes: Imgur Sangat menyebalkan karena memaksa interaksi selama pembaruan paket. .
Spencer D
15

Untuk apt-get, -yatau --assume-yesbekerja dengan baik (seperti yang dijelaskan oleh @rinzwind) dan saya menganggap itu adalah jawaban terbaik di sini. Untuk banyak operasi administratif interaktif semacam itu, ada perintah serupa.

Cara lain yang cukup umum untuk melakukan ini adalah sesuatu seperti:

 $ echo "y" | sudo apt-get install edamame_biscuit

(Di mana edamame-biskuit adalah paket (buatan) yang ingin Anda instal, dan "y" dianggap sebagai respons yang sah; gantikan dengan "ya" atau teks lain sesuai kebutuhan.)

'Fitur' dari metode ini adalah ini akan rusak jika Anda salah mengasumsikan hanya satu prompt interaktif. Jika ada beberapa pertanyaan yang mungkin tidak diinginkan yang mungkin Anda tidak ingin katakan ya, Anda menghindari situasi membuat sistem bergulir tanpa bertanya.

belacqua
sumber
13
Juga yes | sudo apt-get install edamame-biscuit,. Ya adalah perintah yang mengirim kata "ya" ke hasilnya. Anda juga dapat membuatnya menghasilkan teks lain sesuai kebutuhan, lihat halaman manual.
Kroltan
14
@Kroltan yesPerintah (secara default) hanya menampilkan huruf yang ydiikuti oleh baris baru sebanyak yang diperlukan untuk mengisi buffer pipa. Untuk benar-benar mencetak kata yes, Anda harus menggunakan perintah yes yes.
Jonathan Callen
3
yes, maafkan kesalahan saya
Kroltan
4
@Braiam Saya pikir itu intinya, jadi itu tidak melakukan apa-apa jika seseorang hanya menempelkan ini di cangkangnya.
Kroltan
2
Saya terutama menyukai bagian "Fitur 'dari metode ini adalah ini akan rusak jika Anda salah berasumsi hanya satu prompt interaktif." sebagai spamming ya untuk semuanya bisa sangat berbahaya.
BeowulfNode42
4

Pertama-tama, mari kita pahami mengapa pesan itu muncul. Bahkan, jika paket tersebut tidak memiliki dependensi yang belum Anda instal atau yang secara eksplisit Anda perintahkan untuk diinstal, apt tidak pernah meminta Anda:

➜  ~  sudo apt-get -qq install xfce4-screenshooter
Selecting previously unselected package xfce4-screenshooter.
(Reading database ... 296146 files and directories currently installed.)
Preparing to unpack .../xfce4-screenshooter_1.8.1-2_amd64.deb ...
Unpacking xfce4-screenshooter (1.8.1-2) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for desktop-file-utils (0.22-1) ...
Processing triggers for mime-support (3.56) ...
Setting up xfce4-screenshooter (1.8.1-2) ...

Sementara jika Anda ingin menginstal paket yang tergantung pada paket yang tidak Anda sebutkan, ia akan bertanya:

➜  ~  sudo apt-get -q install avis
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libjzlib-java libmina-java libslf4j-java
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Need to get 720 kB of archives.
After this operation, 1,258 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

Meski begitu, tidak akan bertanya apakah Anda juga secara implisit mengatakan bahwa Anda ingin menginstal paket itu:

➜  ~  apt-get -q install avis libjzlib-java libmina-java libslf4j-java
Reading package lists...
Building dependency tree...
Reading state information...
Suggested packages:
  libmina-java-doc libspring-beans-java libcommons-logging-java
  liblog4j1.2-java
The following NEW packages will be installed:
  avis libjzlib-java libmina-java libslf4j-java
0 upgraded, 4 newly installed, 0 to remove and 14 not upgraded.
Inst libjzlib-java (1.1.3-1 Debian:testing [all])
Inst libslf4j-java (1.7.7-1 Debian:testing [all])
Inst libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Inst avis (1.2.2-2 Debian:testing [all])
Conf libjzlib-java (1.1.3-1 Debian:testing [all])
Conf libslf4j-java (1.7.7-1 Debian:testing [all])
Conf libmina-java (1.1.7.dfsg-11 Debian:testing [all])
Conf avis (1.2.2-2 Debian:testing [all])

Tetapi, bagaimana cara membuatnya sehingga tidak meminta Anda secara definitif? Melalui jawaban Rizwind harus mencakup solusi ad-hoc dan scripting (pada kenyataannya, opsi itu lebih banyak digunakan dalam skrip) Anda dapat memodifikasi apt.conffile Anda dan menambahkan:

APT::Get::Assume-Yes

Sesuatu seperti ini seharusnya cukup:

echo 'APT::Get::Assume-Yes;' | sudo tee -a /etc/apt/apt.conf.d/00Do-not-ask

Catatan, ini tidak akan memungkinkan permintaan lebih mengerikan lainnya yang harus Anda verifikasi , seperti:

➜  ~  sudo apt-get install sonar
WARNING: The following packages cannot be authenticated!
  sonar
Install these packages without verification? [y/N] 

Itulah sebabnya saya tidak akan merekomendasikan penggunaan yes | ..., karena peringatan ini akan diabaikan.

Braiam
sumber
Untuk "PERINGATAN: Paket-paket berikut ini tidak dapat diautentikasi!", Apa yang harus dilakukan? Saya mendapatkan ini untuk gambar Docker ( python:3.6-slim). Haruskah saya mengajukan pertanyaan terpisah untuk itu?
Martin Thoma
@ MartinThoma biasanya, itu adalah masalah dengan daftar paket yang tidak diperbarui. Jalankan pembaruan apt-get sebelum menginstal. Jika itu tidak menghapus pesan, ajukan pertanyaan dengan sebanyak mungkin detail, hingga bagaimana Anda membuat gambar buruh pelabuhan.
Braiam
0

Tambahkan -yke instalasi perpustakaan mana pun

Misalnya :sudo apt-get install -y nodejs

Misalnya :sudo apt-get install -y postgres

Misalnya :sudo apt-get install -y mongodb




Ada --force-yes as well, dan berhati-hati dari ruang yang tidak disengaja. disusutkan untuk distro terbaru

vijay
sumber