Saya ingin mengonfigurasi paket ubuntu melalui dpkg-reconfigure dengan semua nilai yang disediakan melalui mode non-interaktif (dalam skrip).
Sebenarnya kasus saya adalah konfigurasi firebird ( http://www.firebirdsql.org/manual/ubusetup.html ), yang ketika menggunakan perintah:
sudo dpkg-reconfigure firebird2.5-superclassic -freadline
meminta saya untuk 2 nilai, di mana jawabannya adalah 'Y' dan 'newpwd'.
Output sampel terlihat seperti ini:
sudo dpkg-reconfigure firebird2.5-superclassic -freadline
* Firebird 2.5 superclassic server not running
Configuring firebird2.5-superclassic
------------------------------------
Accept if you want Firebird server to start automatically.
If you only need the Firebird client and there are no databases that will be served by this host, decline.
Enable Firebird server? Y
Password for firebird 2.5
-------------------------
Firebird has a special user named SYSDBA, which is the user that has access to all databases. SYSDBA can also create new databases and users. Because of this, it
is necessary to secure SYSDBA with a password.
The password is stored in /etc/firebird/2.5/SYSDBA.password (readable only by root). You may modify it there (don't forget to update the security database too,
using the gsec utility), or you may use dpkg-reconfigure to update both.
To keep your existing password, leave this blank.
Password for SYSDBA:
* Starting Firebird 2.5 superclassic server...
...done.
* Firebird 2.5 superclassic server already running
Saya sudah mencoba here strings
melalui skrip bash seperti ini:
sudo dpkg-reconfigure firebird2.5-superclassic -f readline << EOF
Y
newpwd
EOF
Namun ini tidak berhasil karena suatu alasan dan meminta nilai yang diberikan.
Adakah ide bagaimana memberi nilai pada skrip?
Paket Debian menggunakan debconf untuk mengumpulkan pengaturan waktu instalasi. Debconf mendukung banyak frontend untuk meminta nilai pada pengguna. The
-f
pilihan untukdpkg-reconfigure
menyeleksi yang Debconf frontend untuk digunakan.The
readline
frontend dirancang untuk digunakan interaktif. Jangan menggunakannya dalam skrip otomatis.Jika nilai default baik-baik saja, maka cukup gunakan
noninteractive
frontend.Jika Anda ingin memberikan nilai yang berbeda, Anda memiliki dua opsi. Anda dapat tetap menggunakan
noninteractive
frontend, dan preseed database debconf . Cara termudah untuk melakukan ini adalah menginstal paket pada satu mesin dan mengkonfigurasinya secara interaktif, lalu ekstrak bagian-bagian yang relevan dari/var/cache/debconf/config.dat
dan berikan file ini ke debconf:Metode lain adalah dengan menggunakan
editor
frontend, dan mengatur variabel lingkunganVISUAL
(atauEDITOR
, tetapiVISUAL
lebih diutamakanEDITOR
jika diatur) ke program yang mengambil file yang berisi pengaturan saat ini sebagai argumen, dan menimpa file itu dengan pengaturan yang Anda inginkan.sumber
/var/cache/debconf/config.dat
sendiri. Anda dapat menggunakandebconf-get-selections
daridebconf-utils
paket. Lihat ini misalnya.dpkg-reconfigure
, yang saya kira OP ingin mengotomatisasi karena dia akan sering melakukannya.debconf-get-selections
kemungkinan akan berguna di sini. Jika Peter ingin sering melakukan ini dengan nilai yang berbeda, ia harus menghasilkan secaraconfig.dat
dinamis (ini adalah format sederhana). Ini lebih mudah daripadaexpect
.expect
adalah jalan putus asa. Sebagai contoh, itu akan rusak jika versi baru dari paket memperkenalkan pertanyaan baru (atau Anda memerlukan skrip yang jauh lebih canggih).Gunakan
debconf-set-selections
perintah untuk memasukkan nilai-nilai baru ke dalam database debconf (/var/cache/debconf/config.dat
).Jawaban Eli tidak jelas bagi saya, jadi saya akan menjelaskannya langkah demi langkah.
Hal pertama yang harus dilakukan adalah menginstal paket secara interaktif dan mendapatkan pilihan yang dipilih dengan (ubah
firebird
ke nama paket Anda):atau:
Kemudian pra-seed database debconf dengan jawaban oleh
debconf-set-selections
, misalnya:di mana sintaks:
Berikut ini contoh lain untuk
ttf-mscorefonts-installer
paket:Catatan: Pilihan input dapat dari input standar atau file.
Periksa:
man debconf-set-selections
untuk info lebih lanjut.Cara alternatif adalah dengan menggunakan Kickstart .
sumber
Saya telah mengaduk-aduk sekitar satu jam hanya mencoba untuk menyingkat solusi untuk ini menjadi satu-liner dan akhirnya saya menemukannya: debconf-set-choices
Ini akan memaksa debconf untuk menggunakan default dan tidak mengganggu Anda. Anda juga dapat mengatur default konfigurasi untuk setiap paket Debian, lihat halaman manual untuk info lebih lanjut.
sumber
sudo dpkg-reconfigure debconf -f noninteractive
atauexport DEBIAN_FRONTEND=noninteractive
?Saya telah mencoba melakukan konfigurasi ulang pengaturan LDAP (paket ldap-auth-config) menggunakan metode debconf-get-choices / set-seleksi yang disebutkan di atas, hanya untuk menemukan bahwa paket ini mengabaikan pengaturan dalam debconf setelah instalasi awal. Anda dapat menggunakan debconf untuk melakukan pre-seed sebelum menginstal, tetapi setelah menginstal ldap-auth-config lebih memilih untuk menimpa pengaturan debconf Anda dengan apa pun yang diatur dalam file konfigurasi sistem yang dikelolanya. Paket pam-auth-config memiliki perilaku yang sama.
Mekanisme EDITOR / VISUAL juga sulit digunakan dalam kasus ini karena ldap-auth-config memanggilnya beberapa kali untuk set pertanyaan yang berbeda. Ini dapat ditangani dengan lebih mudah dengan skrip harapan, atau dengan secara langsung memodifikasi file konfigurasi sistem. Jadi, tidak selalu mudah untuk menghindari jatuh kembali ke yang diharapkan!
sumber