Melewati jawaban default untuk pertanyaan pemasangan paket apt-get?

27

Saya mencoba menulis skrip konfigurasi untuk server baru, dan salah satu langkah pertama adalah menginstal serangkaian paket yang diperlukan, seperti MySQL, phpMyAdmin, dll. Menggunakan apt-get installNamun, ketika dpkg mencoba mengkonfigurasinya, ia meminta Anda untuk beberapa opsi, seperti kata sandi root MySQL, kata sandi phpMyAdmin, server apa yang digunakan, dll.

Karena saya kemungkinan akan meneruskan skrip ini kepada rekan kerja yang tidak mungkin membaca petunjuknya, dan keinginan saya untuk memulainya dan berjalan pergi, saya ingin tahu bagaimana menyampaikan serangkaian jawaban "default" / nilai untuk digunakan. Ini mungkin termasuk nama pengguna / kata sandi / nilai dinamis lainnya yang dilewatkan pada baris perintah.

-

Saya menyadari bahwa memiliki kata sandi dalam skrip adalah masalah keamanan, tetapi saya bersedia mengabaikannya, khususnya dalam arti menginstal paket yang secara umum menyiratkan jawaban.

Tarka
sumber

Jawaban:

44

Gunakan pra-konfigurasi konfigurasi debconf.

Lakukan uji coba instal untuk mendapatkan nilai yang Anda inginkan:

root@test1:~# apt-get install mysql-server

..dan atur kata sandi root saat diminta saat instalasi.

Kemudian Anda dapat memeriksa seperti apa pengaturan debconf untuk apa yang baru saja Anda instal (Anda mungkin perlu menginstal debconf-utils):

root@test1:~# debconf-get-selections | grep mysql-server
mysql-server-5.5        mysql-server/root_password_again        password
mysql-server-5.5        mysql-server/root_password      password
mysql-server-5.5        mysql-server/error_setting_password     error
mysql-server-5.5        mysql-server-5.5/postrm_remove_databases        boolean false
mysql-server-5.5        mysql-server-5.5/start_on_boot  boolean true
mysql-server-5.5        mysql-server-5.5/nis_warning    note
mysql-server-5.5        mysql-server-5.5/really_downgrade       boolean false
mysql-server-5.5        mysql-server/password_mismatch  error
mysql-server-5.5        mysql-server/no_upgrade_when_using_ndb  error

Ada beberapa kebisingan di sana, tetapi bagian yang penting adalah pengaturan kata sandi.

Kemudian, untuk pemasangan baru, Anda dapat menghindari konfirmasi sepenuhnya dengan mengatur kata sandi sebelumnya:

root@test2:~# echo "mysql-server-5.5 mysql-server/root_password_again password Som3Passw0rd" | debconf-set-selections
root@test2:~# echo "mysql-server-5.5 mysql-server/root_password password Som3Passw0rd" | debconf-set-selections
root@test2:~# apt-get install mysql-server

Tidak ada permintaan sama sekali selama instalasi itu.

Shane Madden
sumber
10
sudo apt-get install debconf-utilsseperlunya.
Andrew
Ini persis seperti apa yang saya cari, terima kasih! Saya akan mencobanya sebentar lagi.
Tarka
Selain dari kesalahan yang diketahui dengan phpMyAdmin tidak menerima kata sandi root MySQL pra-seeded, ini berfungsi dengan baik!
Tarka
1
hanya ingin tahu, apakah ada cara untuk mendapatkan pengaturan debconf dari sistem paket tanpa menginstal paket?
stefan.at.wpf
17
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_
Michael Hampton
sumber
Apakah Anda memiliki referensi untuk apa yang membaca $ DEBIAN_FRONTEND?
Andrew
Ini telah menjadi bagian dari Debian begitu lama sehingga saya pikir hanya Ian yang benar-benar dapat memberi tahu Anda ketika sudah ditambahkan.
Michael Hampton
1
@Andrew Ini dibaca oleh debconf , yang sebenarnya berhubungan dengan pertanyaan.
mgorven
@ Morf Ahh, saya belum pernah jauh lebih dalam dari dpkg sebelumnya.
Andrew
AFAIK, solusi ini hanya memungkinkan Anda melewatkan prompt dan menerima default untuk semua jawaban. Jika Anda ingin menetapkan jawaban non-default, Anda harus menggunakan solusi lain, seperti debconf-set-selectionsmetode.
MestreLion