Bagaimana membuat apt-get menerima file konfigurasi baru dalam instalasi debian tanpa pengawasan dari Repo

21

Saya sedang menulis skrip untuk instalasi tanpa pengawasan dari paket yang ada di repo kami, ini adalah paket perangkat lunak dengan salah satu file konfigurasi bertanda Debian. Apakah ada opsi yang dapat saya sampaikan apt-get/ aptitudesehingga menerima file konfigurasi baru?

Pada dasarnya saya membutuhkan apt/ aptitudesetara dengan dpkg --force-confnew

Saya perlu menjawab pertanyaan berikut yang diajukan saat apt-getmenginstal dengan Y


File konfigurasi `` / opt / application / conf / XXX.conf` '

==> File on system created by you or by a script.
==> File also in package provided by package maintainer.

What would you like to do about it ?  Your options are:
Y or I  : install the package maintainer's version
N or O  : keep your currently-installed version
  D     : show the differences between the versions
  Z     : background this process to examine the 

The default action is to keep your current version.

Informasi tambahan:

Juga, saya mengirimkan sudokata sandi dalam sebuah pipa untuk menjalankan perintah

echo "mysudopass"|sudo -S apt-get mypackage

Ini menandai kesalahan dalam instalasi ketika instalasi berada pada fase interaktif konfigurasi.

Saya di Ubuntu 10.04
versi apt: apt 0.7.25.3

Mengapa saya tidak bisa menggunakan dpkg: Debian ini harus diinstal dari Repo dan saya tidak punya Debian lokal di mesin saya

Raman
sumber

Jawaban:

22

Anda dapat mengirimkan dpkgparameter apt-getseperti ini

apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confnew install pkgname1 pkgname2 ...

Dengan --force-confdefjika file konfigurasi lama masih ada, mereka tidak akan ditimpa. Jadi Anda mungkin tidak akan menggunakannya, saya hanya mendokumentasikannya untuk orang lain.

sudotidak akan meminta kata sandi jika Anda meniadakan opsi otentikasi untuk pengguna atau menambahkan NOPASSWDtag pada entri tertentu. misalnya

someuser ALL = NOPASSWD: /usr/bin/apt-get
forcefsck
sumber
7

Anda dapat mencoba yang berikut ini:

export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install whatever-2

Tetapi perhatikan bahwa ini memiliki implikasi, seperti kata sandi default kosong (mungkin Anda ingin beberapa alat penyebaran / konfigurasi seperti boneka, koki, fabric ...?).

Lihat sudoers (5) tentang cara mengizinkan sudodoa tanpa kata sandi .

sr_
sumber
3

Sebagai alternatif dari apa yang disarankan oleh forcefsck, saya sarankan Anda menambahkan ini ke pengaturan APT sehingga Anda tidak diharuskan untuk menambahkan opsi-opsi yang sulit untuk ditulis ini sepanjang waktu. Juga, ini akan membantu untuk peningkatan tanpa pengawasan jika Anda memiliki pengaturan ini.

Buat /etc/apt/apt.conf.d/71debconffile untuk memiliki konten berikut:

Dpkg::Options {
  "--force-confnew";
};

Catatan (dari Geoff): perubahan ini akan menjadi perubahan global. Jika Anda memiliki paket lain di sistem yang ingin Anda upgrade tanpa pengawasan tetapi juga telah dikonfigurasi secara manual, ini bukan solusi yang tepat.

Te Ri
sumber
Ini mungkin pilihan yang baik, namun penting untuk dicatat bahwa ini akan menjadi perubahan GLOBAL. Jika Anda memiliki paket lain pada sistem yang Anda ingin dapatkan upgrade tanpa pengawasan tetapi juga telah dikonfigurasi, ini bukan solusi yang tepat.
Geoff
2

Selain jawaban lain, Anda mungkin juga harus mengatur lingkungan UCF_FORCE_CONFFNEW = 1 .

Misalnya openssh di debian stretch menggunakan ucf (bukan debconf) di dalamnya openssh-server/openssh-7.4p1/debian/openssh-server.postinstuntuk menanyakan tentang file konfigurasi. (Anda dapat melihat openssh-server.postinstdengan menggunakan dgetmelawan http://security.debian.org/debian-security/pool/updates/main/o/openssh/openssh_7.4p1-10+deb9u4.dsc )

Kami harus menggunakan semua trik di halaman ini sebagai tambahan untuk menjadi pengguna bebas dari debconf preseeding .

Namun kami berhenti export DEBIAN_FRONTEND=noninteractivekarena kami ingin tahu apakah kami melewatkan sesuatu (itu mungkin penting). Kasing penggunaan kami adalah operator yang memulai operasi. Pembaruan ini diharapkan bersifat non-interaktif, tetapi operator hadir jika terjadi kesalahan dan sebuah dialog muncul dengan sendirinya. Situasi Anda mungkin berbeda.

Tapi export DEBIAN_FRONTEND=noninteractivepalu godam Anda.

Berhati-hatilah: Pengaturan -o Dpkg::Options::=--force-confnewdan / atau UCF_FORCE_CONFFNEW=1berarti bahwa semua file konfigurasi dari paket yang diinstal kembali ke yang upstream. Jadi mis. Dalam kasus openssh-server, Anda /etc/ssh/sshd_configakan diatur ulang ke pengaturan pabrik. Dan misalnya PermitRootLogin=yesakan dihapus. Tapi tentu saja Anda tidak menggunakannya, jadi Anda akan baik-baik saja! ;-)

Peter V. Mørch
sumber