Mengaktifkan peningkatan tanpa pengawasan dari skrip shell

17

Saya memiliki skrip shell untuk secara otomatis mengkonfigurasi mesin virtual Ubuntu baru untuk keperluan saya. Saya ingin skrip ini diinstal dan diaktifkan unattended-upgrades, tetapi saya tidak dapat menemukan cara melakukannya tanpa interaksi pengguna.

Cara biasa untuk mengaktifkan pemutakhiran adalah dpkg-reconfigure unattended-upgrades, tetapi tentu saja itu interaktif. Ujung depan noninteraktif menghindari mengajukan pertanyaan sama sekali, dan ujung depan teks tampaknya terikat dan bertekad untuk melakukan I / O dengan tty dan tidak dengan stdin / stdout.

Grant Watson
sumber
1
Saya belum pernah menggunakan alat ini sebelumnya, tetapi sepertinya mengaktifkannya menulis 1 hingga dua baris dalam file /etc/apt/apt.conf.d/20auto-upgrades. Jika Anda menulis file itu secara manual, apakah akan berfungsi?
mfisch

Jawaban:

20

Cukup buat salinan dari /etc/apt/apt.conf.d/20auto-upgrade setelah mengonfigurasinya sesuka Anda, dan letakkan di tempat pada mesin target Anda. Anda dapat menanamkannya di skrip Anda, atau Anda bisa rsync atau memindahkannya dari server, atau apa pun.

Jadi pada dasarnya skrip Anda mungkin melakukan sesuatu seperti ini:

apt-get install unattended-upgrades
wget -O /etc/apt/apt.conf.d/20auto-upgrades http://myserver.mytld/confs/20auto-upgrades
/etc/init.d/unattended-upgrades restart

Sama sekali tidak ada alasan untuk melakukan monyet dengan skrip dpkg-reconfigure sama sekali.

Jika Anda tidak ingin mengambil file conf dari server jauh, itu SANGAT sangat singkat dan sederhana - versi default, yang mengambil dan menginstal pembaruan keamanan saja, terlihat seperti ini:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Jadi, Anda bisa menggemakan baris-baris itu ke file konfigurasi langsung dengan yang berikut:

echo -e "APT::Periodic::Update-Package-Lists \"1\";\nAPT::Periodic::Unattended-Upgrade \"1\";\n" > /etc/apt/apt.conf.d/20auto-upgrades
Jim Salter
sumber
1

Jika Anda ingin menggunakan dpkg-reconfigure, Anda dapat mengatur nilainya dengan "debconf-set-selection", dan kemudian mengkonfigurasi ulang dengan cara yang tidak interaktif.

echo "unattended-upgrades       unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades
pengguna497484
sumber
0

Anda harus menggunakan sudo untuk menggema /etc/apt/apt.conf.d/20auto-upgrades

if [[ ! -f /etc/apt/apt.conf.d/20auto-upgrades.bak ]]; then
    sudo cp /etc/apt/apt.conf.d/20auto-upgrades /etc/apt/apt.conf.d/20auto-upgrades.bak
    sudo rm /etc/apt/apt.conf.d/20auto-upgrades
    echo "APT::Periodic::Update-Package-Lists \"1\";
    APT::Periodic::Download-Upgradeable-Packages \"1\";
    APT::Periodic::AutocleanInterval \"30\";
    APT::Periodic::Unattended-Upgrade \"1\";" | sudo tee --append /etc/apt/apt.conf.d/20auto-upgrades
fi
Arturo
sumber
0
dpkg-reconfigure -f noninteractive unattended-upgrades
aexl
sumber
0

Saya akan menyarankan untuk memasukkan parameter konfigurasi untuk mengkonfigurasi upgrade tanpa pengawasan.

sudo touch /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Update-Package-Lists "1"" >> /etc/apt/apt.conf.d/20auto-upgrades

echo "APT::Periodic::Unattended-Upgrade "1" " >> /etc/apt/apt.conf.d/20auto-upgrades

Cara yang sama Anda dapat mengkonfigurasi / menambahkan parameter sesuai dengan kebutuhan Anda dalam file conf /etc/apt/apt.conf.d/50unattended-upgrades.

Jangan lupa untuk me-restart layanan untuk menerapkan perubahan.

/etc/init.d/unattended-upgrades restart
Ketan Patel
sumber