Włączanie aktualizacji nienadzorowanych ze skryptu powłoki

17

Mam skrypt powłoki, aby automatycznie skonfigurować nowe maszyny wirtualne Ubuntu do moich celów. Chciałbym, aby ten skrypt został zainstalowany i włączony unattended-upgrades, ale nie mogę wymyślić, jak to zrobić bez interakcji użytkownika.

Zwykłym sposobem na włączenie aktualizacji jest dpkg-reconfigure unattended-upgrades, ale oczywiście interaktywna. Nieinteraktywny interfejs w ogóle unika zadawania jakichkolwiek pytań, a interfejs tekstowy wydaje się związany i zdeterminowany, aby wykonywać operacje wejścia / wyjścia z tty, a nie ze stdin / stdout.

Grant Watson
źródło
1
Nie korzystałem wcześniej z tego narzędzia, ale wygląda na to, że włączenie powoduje zapisanie 1 do dwóch linii w pliku /etc/apt/apt.conf.d/20auto-upgrades. Czy jeśli ręcznie zapiszesz ten plik, zadziała?
mfisch

Odpowiedzi:

20

Po prostu wykonaj kopię pliku /etc/apt/apt.conf.d/20auto-upgrades po skonfigurowaniu go tak, jak chcesz i upuść go na swoim komputerze docelowym. Możesz osadzić go w swoim skrypcie lub rsync lub wget z serwera lub cokolwiek innego.

Zasadniczo skrypt może wykonać coś takiego:

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

Naprawdę nie ma powodu, aby w ogóle korzystać ze skryptu dpkg-reconfigure.

Jeśli nie chcesz pobierać pliku conf ze zdalnego serwera, jest on BARDZO bardzo krótki i prosty - domyślna wersja, która pobiera i instaluje tylko aktualizacje zabezpieczeń, wygląda następująco:

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

Możesz więc po prostu powtórzyć te wiersze bezpośrednio w pliku konfiguracyjnym, wykonując następujące czynności:

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

Jeśli chcesz użyć dpkg-reconfigure, możesz ustawić wartość za pomocą „debconf-set-selections”, a następnie ponownie skonfigurować ją w sposób nieinteraktywny.

echo "unattended-upgrades       unattended-upgrades/enable_auto_updates boolean true" | debconf-set-selections; dpkg-reconfigure -f noninteractive unattended-upgrades
użytkownik497484
źródło
0

Aby użyć echa, musisz użyć sudo /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
źródło
0
dpkg-reconfigure -f noninteractive unattended-upgrades
aexl
źródło
0

Proponuję wstawić parametry konfiguracyjne, aby skonfigurować aktualizacje nienadzorowane.

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

W ten sam sposób możesz skonfigurować / dodać parametry zgodnie z wymaganiami w pliku conf /etc/apt/apt.conf.d/50unattended-upgrades.

Nie zapomnij ponownie uruchomić usługi, aby zastosować zmiany.

/etc/init.d/unattended-upgrades restart
Ketan Patel
źródło