Secara otomatis menjawab 'Ya' saat menggunakan apt-get install

356

Apakah ada cara untuk apt-get installmenjawab "ya" pada "Apakah Anda ingin melanjutkan [y / T]?"?

Mistiry
sumber

Jawaban:

431

melalui halaman manual apt-get :

apt-get -y install [packagename]
jrc03c
sumber
Apakah ini sama dengan @bclermont answer (--Ya --force-yes)?
jjxtra
175

Masalah dengan:

apt-get --yes install $something

adalah bahwa ia akan meminta konfirmasi manual jika kunci publik pemilik tanda tangan paket tidak dalam keyring, atau kondisi lainnya. untuk memastikan itu tidak meminta konfirmasi lakukan saja ini:

apt-get --yes --force-yes install $something

Jika Anda ingin memiliki pengaturan ini permanen, buat file di /etc/apt/apt.conf.d/, seperti /etc/apt/apt.apt.conf.d/90forceyes dengan konten berikut:

APT::Get::Assume-Yes "true";
APT::Get::force-yes "true";
bclermont
sumber
3
+1 untuk variasi. Semua -ysemakin membosankan. (Plus itu jawaban yang lebih lengkap.)
Dennis Williamson
1
Akankah ini bekerja ketika dikatakan "Untuk melanjutkan mengetikkan frasa 'Ya, lakukan seperti yang saya katakan!'" Juga? Jika tidak, apa masalahnya? Saya menemukan ini ketika mencoba untuk mengganti sysvinit dengan systemd di gambar debian saya yang di-chroot.
Lennart Rolland
13
Harap jangan pernah menggunakan --force-yes: seperti yang dibalas oleh utas terkait inidebian-devel , --force-yesmungkin membuat sistem tidak dapat digunakan. (Saya tidak downvoting karena jawabannya sebenarnya mengatasi masalah seperti yang dinyatakan oleh OP, tapi saya tetap akan menambahkan PERINGATAN MERAH BESAR untuk jawabannya.)
kostix
7
APT :: Dapatkan :: Asumsikan-Ya "benar"; membantu saya untuk menghindari interupsi dalam instalasi di wadah buruh pelabuhan.
Mehdi Sadeghi
3
force-yes telah ditinggalkan. tracker.mender.io/browse/CFE-2360
rrawat
53

Perhatikan bahwa jika Anda juga ingin secara otomatis mengikuti jawaban default saat prompt interaktif muncul, Anda dapat menggunakannya DEBIAN_FRONTEND=noninteractive

Instalasi tunggal:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install [packagename]

Misalnya:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y install postfix

Semua pembaruan:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y update 

Anda dapat mengatur opsi yang lebih baik dengan -o Dpkg::Options::="--force-confdef"dan -o Dpkg::Options::="--force-confold".

Contoh:

apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold"

atau

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

Contoh prompt interaktif:

masukkan deskripsi gambar di sini

Bacaan menarik: Lakukan instalasi paket Debian tanpa pengawasan

Franck Dernoncourt
sumber
1
Jawaban yang bagus Bahkan dengan -y, saya masih mendapat konfirmasi menanyakan apakah saya ingin memulai kembali layanan. Saya membutuhkan ini untuk sepenuhnya menghilangkan semua prompt.
wisbucky
14
APT::Get::Assume-Yes "true";

APT::Get::force-yes "true";

Setidaknya ini harus masuk /etc/apt/apt.confdan berkomentar. Saya khawatir Ubuntu mengambil taktik Microsoft untuk selalu meminta izin.

"Apakah kamu yakin?", Tentu saja aku yakin, aku bukan monyet yang terlatih hanya mengetik di keyboard, akan klik senang.

Selanjutnya pintu akan bertanya, "Apakah Anda yakin ingin keluar?"
Oven akan bertanya, "Apakah Anda yakin ingin memasak?"
Mobil akan bertanya, "Apakah Anda yakin ingin mengerem?"
Pemadam api akan bertanya, "Apakah Anda yakin ingin memadamkan api?"
Maaf Dave, aku tidak bisa membiarkanmu melakukan itu.
HAL9000 dapat menggunakan kontraksi tetapi Data tidak bisa, atau tidak bisa.

Ajax4Hire
sumber
3
Perbedaannya dengan HAL9000 dan dpkg yang meminta izin adalah bahwa HAL mengatakan "tidak, titik", sedangkan "Ya, lakukan apa yang saya katakan" hanya akan muncul jika Anda akan benar-benar dan benar-benar merusak sistem Anda. Jika itu yang Anda inginkan, tentu saja, silakan. Tetapi memiliki peringatan dalam kasus itu tampaknya masuk akal.
Wouter Verhelst
7
apt-get -y update
apt-get -y install [package]
steve.lippert
sumber
2
+1, tetapi mengapa updateperlu izin?
amyassin
@amyassin apt-get updateperintah ini memerlukan izin root karena memperbarui daftar paket lokal (indeks), yang merupakan file sistem yang dimiliki oleh root.
jjmontes
3

umumnya opsi dari manual harus bekerja dengan baik

apt-get -y --force-yes install package

jika tidak berhasil Anda dapat mencoba menggunakan yesperintah.

yes | apt-get -y --force-yes install package

memang menggunakan ini dengan skrip penyediaan shell gelandangan saya

PS: jika Anda ingin non-interaktif tetapi dengan umumnya menyatakan tidak maka Anda dapat mencoba ini:

yes no | apt-get install package
Summer-Sky
sumber
1

Alias ( well ) yang baru jugaapt mengambil sakelar -y( --yes):

sudo apt -y upgrade
yPhil
sumber
1

Jika Anda selalu menginginkan argumen -y saya sarankan menambahkan baris

alias apt-get='apt-get -y' #Automatic -y argument on apt-get commands

ke dalam .bashrc Anda. Ini, seperti dijelaskan oleh komentar, akan secara otomatis menambahkan argumen -y ke semua perintah apt-get Anda dan karenanya menyetujui semua unduhan.


CATATAN: Ini akan tetap benar sampai Anda mengembalikan .bashrc Anda dan memulai kembali shell.

Joseph Stevens
sumber
1

Saya sedang mencari cara untuk memilih non-default dalam skrip, khususnya ketika menginstal wireshark, dan akhirnya menggunakan tmux untuk berinteraksi dengan shell, sebagai berikut:

# Start a detached root session
sudo tmux new-session -d
# Send the command
sudo tmux send-keys "DEBIAN_FRONTEND=readline apt-get -qq install wireshark-common; exit" enter
# Wait for the tmux session to get to the interactive stage
sleep 5
# Answer the question
sudo tmux send-keys "yes" enter
# Now attach to the session so we wait for command completion
sudo tmux attach
Stephen Ramm
sumber