Dist-upgrade Debian non interattivo al 100%


38

Esiste un modo per eseguire un apt-get dist-upgradeDebian che non solo risponda automaticamente "sì" a tutte le domande poste, ma utilizzi anche impostazioni predefinite ragionevoli come risposte a domande sufficientemente sofisticate da richiedere la comparsa di varie finestre di dialogo interattive? Sto pensando qui alla roba keymap che appare quando si aggiorna libc6e alle scelte dell'immagine del kernel.

L'obiettivo è quello di essere in grado di avviare da remoto un dispositivo piuttosto grande dist-upgrade- anche per una macchina che è gravemente indietro rispetto ai tempi - e di non doverlo fare da babysitter, a meno che qualcosa non sia semplicemente orribilmente, disastrosamente sbagliato.

Sicuramente questo è possibile?

Grazie in anticipo!


Per quelli che vogliono solo aggiornare (piuttosto che dist-upgrade) su Ubuntu, prova il pacchetto di aggiornamento automatico .
Jo Liss,

Risposte:


42

Se imposti DEBIAN_FRONTEND=noninteractive(per impedire la visualizzazione dei messaggi debconf) e aggiungi force-confolde force-confdefal tuo /etc/dpkg/dpkg.cfgfile, dovresti avere un'esperienza di installazione del pacchetto completamente non interattiva. Ogni pacchetto che richiede ancora informazioni ha un bug critico per il rilascio (e lo dico sia come drogato di automazione sia come sviluppatore Debian).


questo non ha funzionato per me. apt-listchangesè stato aperto da less.
magnetar,

@magnetar: questo è un problema con apt-listchanges, non apt. Disinstallare apt-listchanges o configurarlo in modo appropriato.
womble

1
Prova: env APT_LISTCHANGES_FRONTEND = none apt-get dist-upgrade -u -y
H.-Dirk Schmitt

21

Florian Lohoff ha pubblicato un modo per ottenere ciò che Womble ha suggerito in un singolo comando:

DEBIAN_FRONTEND=noninteractive \
apt-get \
-o Dpkg::Options::="--force-confnew" \
--force-yes \
-fuy \
dist-upgrade

Ovviamente potresti anche usare -o Dpkg::Options::="--force-confnew --force-confdef"(cerca nella pagina man di dpkg per confermare). Non sono sicuro in quali casi ciò farebbe la differenza però. Personalmente ho bisogno dell'aggiornamento non interattivo per aggiornare le immagini vanilla, nel qual caso suppongo che scegliere sempre il nuovo file di configurazione (senza --force-confdef) sia una cosa ragionevole.


W: --force-yes is deprecated, use one of the options starting with --allow instead.
Alex

3

Anche se la risposta di Womble sopra è generalmente buona, non ha funzionato per me e ho dovuto fare qualche ricerca aggiuntiva per rimanere incustodito al 100%. Ho pensato di condividere il risultato in modo conciso per rendere le cose più semplici per i futuri visitatori.

Di seguito è riportato uno script che verrà eseguito in base alle raccomandazioni di aggiornamento delle note di rilascio di debian 8 (principalmente) insieme a flag e variabili di ambiente che lo renderanno incustodito. (gli echos sono solo per il debug e potrebbero essere rimossi - anche se consiglio di tenerli, quindi se lo script si blocca saprai dove)

#!/bin/bash

apt-get remove apt-listchanges --assume-yes --force-yes &&

#using export is important since some of the commands in the script will fire in a subshell
export DEBIAN_FRONTEND=noninteractive &&
export APT_LISTCHANGES_FRONTEND=none &&

#lib6c was an issue for me as it ignored the DEBIAN_FRONTEND environment variable and fired a prompt anyway. This should fix it
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections &&

echo "executing wheezy to jessie" &&
find /etc/apt -name "*.list" | xargs sed -i '/^deb/s/wheezy/jessie/g' &&

echo "executing autoremove" &&
apt-get -fuy --force-yes autoremove &&

echo "executing clean" &&
apt-get --force-yes clean &&

echo "executing update" &&
apt-get update &&

echo "executing upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy upgrade &&

echo "executing dist-upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy dist-upgrade

1
Nota: "--force-yes Force yes; questa è un'opzione pericolosa che farà sì che apt continui senza chiedere conferma se sta facendo qualcosa di potenzialmente dannoso. Non dovrebbe essere usato se non in situazioni molto speciali. L'uso di force-yes può potenzialmente distruggere il tuo sistema! Elemento di configurazione: APT :: Get :: force-yes. Questo è obsoleto e sostituito da --allow-downgrade, --allow-remove-essential, --allow-change-held-pacchetti in 1.1. "
Alex

1

> = Apt 1.1

Se stai usando Apt 1.1 o superiore, --force-yesè disapprovato , in modo che hai per utilizzare le opzioni a partire --allow, invece, ad esempio --allow-downgrades, --allow-remove-essential, --allow-change-held-packages.

Quindi il comando è:

DEBIAN_FRONTEND=noninteractive \
  apt-get \
  -o Dpkg::Options::=--force-confold \
  -o Dpkg::Options::=--force-confdef \
  -y --allow-downgrades --allow-remove-essential --allow-change-held-packages \
  dist-upgrade

Nota: utilizzare --force-confoldper mantenere vecchi e --force-confnewper mantenere nuove configurazioni.

Fonte: CFE-2360: Rendi consapevole la versione del modulo del pacchetto apt_get .

Relazionato:


-4

Dalla apt-get(8)pagina man:

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

Per riferimento, l' -yopzione funziona anche su yum(8).


5
Lo so. Uso quel flag e risponde con successo "sì" alle domande S / N APT standard su come sovrascrivere le configurazioni esistenti, ecc. Ecc. Queste non sono le domande a cui mi riferisco. Quando eseguo un apt-get -y dist-upgrade, mi ha comunque dato alcuni suggerimenti di "dialogo" per ciò che considera roba da big ticket, ovvero modifiche alla keymap, riavvio del servizio relativo a libc6, ecc. Stavo cercando un flag aggiuntivo per disattiva anche quello.
Alex Balashov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.