Come posso installare solo gli aggiornamenti di sicurezza dalla riga di comando?

285

sudo apt-get upgrade installa tutti gli aggiornamenti, non solo gli aggiornamenti di sicurezza. So che posso utilizzare Update Manager per selezionare solo importanti aggiornamenti di sicurezza, ma c'è un modo per farlo dalla riga di comando?

    
posta mac9416 29.07.2010 - 00:50

7 risposte

265

Il pacchetto aggiornamenti automatici fornisce funzionalità per installare automaticamente gli aggiornamenti di sicurezza.

Potresti usare questo, ma invece di configurare la parte automatica potresti chiamarla manualmente. Per questo caso, il seguente dovrebbe farlo tranquillamente:

sudo unattended-upgrade

o versione più dettagliata, per controllare come va

sudo unattended-upgrade -d

NOTA: quando chiami l'aggiornamento automatico, lasci la "s" alla fine.

Si presume che il pacchetto sia installato di default, che probabilmente è. In caso contrario, basta fare:

sudo apt-get install unattended-upgrades

Vedi anche /usr/share/doc/unattended-upgrades/README.md .

    
risposta data blueyed 29.07.2010 - 19:28
103

Alcuni suggerimenti su come gestire gli aggiornamenti

Questo vale sia per Debian che per Ubuntu, ma seguono istruzioni più specifiche per Ubuntu.

  • Mostra solo aggiornamenti di sicurezza:

    apt-get -s dist-upgrade |grep "^Inst" |grep -i securi 
    

    o

    sudo unattended-upgrade --dry-run -d
    

    o

    /usr/lib/update-notifier/apt-check -p
    
  • Mostra tutti i pacchetti aggiornabili

    apt-get -s dist-upgrade | grep "^Inst"
    
  • Installa solo aggiornamenti di sicurezza

    apt-get -s dist-upgrade | grep "^Inst" | 
        grep -i securi | awk -F " " {'print '} | 
        xargs apt-get install
    

Note:

  • A volte Ubuntu mostra aggiornamenti di sicurezza come se provenissero da $ repository di release-updates. È così, mi è stato detto, perché gli sviluppatori di Ubuntu trasferiscono gli aggiornamenti di sicurezza al repository $ release-updates per velocizzare la loro disponibilità.

    In questo caso, puoi eseguire le seguenti operazioni per mostrare solo gli aggiornamenti di sicurezza:

    sudo sh -c 'grep ^deb /etc/apt/sources.list | 
        grep security > /etc/apt/sources.security.only.list'
    

    e

    apt-get -s dist-upgrade -o Dir::Etc::SourceList=/etc/apt/sources.security.only.list -o Dir::Etc::SourceParts=/dev/null  | 
        grep "^Inst" | awk -F " " {'print '}
    
  • Controllare quali servizi devono essere riavviati dopo l'aggiornamento del pacchetto. Scopri quali pacchetti stai per aggiornare in anticipo e pianifica i tuoi riavvii / riavvii. Il problema qui è che, a meno che non si riavvii un servizio, potrebbe ancora essere utilizzata una versione precedente di una libreria (la ragione più comune) che è stata caricata in memoria prima di installare un nuovo pacchetto che corregge una vulnerabilità di sicurezza o altro.

    checkrestart -v
    

    Tuttavia, tieni presente che checkrestart può elencare i processi che non devono necessariamente essere riavviati. Ad esempio, il servizio PostgreSQL potrebbe mantenere in memoria il riferimento a un file xlog già eliminato, che non è un motivo valido per riavviare il servizio.

    Quindi, un altro, più affidabile, modo di verificare questo utilizzando gli utils standard è il seguente piccolo script di bash che ho spudoratamente rubato dal link

    Verifica se i processi in esecuzione su un sistema stanno ancora utilizzando le librerie cancellate in virtù del mantenimento di copie di quelli in memoria attiva.

    ps xh -o pid |
    while read PROCID; do
           grep 'so.* (deleted)$' /proc/$PROCID/maps 2> /dev/null
           if [ $? -eq 0 ]; then
                   CMDLINE=$(sed -e 's/\x00/ /g' < /proc/$PROCID/cmdline)
                   echo -e "\tPID $PROCID $CMDLINE\n"
           fi
    done
    
risposta data ILIV 16.11.2012 - 12:35
46

sostituisci /etc/apt/preferences con quanto segue:

Package: *
Pin: release a=lucid-security
Pin-Priority: 500

Package: *
Pin: release o=Ubuntu
Pin-Priority: 50

ora un semplice apt-get upgrade aggiornerà solo tutti gli aggiornamenti di sicurezza.

Perché (e come) funziona: il file delle preferenze imposterà tutti i pacchetti dalla distribuzione di Ubuntu alla priorità 50, il che li renderà meno desiderabili rispetto ai pacchetti già installati. Ai file originati dal repository di sicurezza viene assegnata la priorità predefinita (500), quindi vengono considerati per l'installazione. Ciò significa che solo i pacchetti che sono considerati più desiderabili di quelli attualmente installati sono aggiornamenti di sicurezza. Ulteriori informazioni sul blocco nella manpage apt_preferences .

Puoi promuovere temporaneamente una certa distribuzione per gli aggiornamenti con l'opzione --target-release che funziona con apt-get e aptitude (almeno) che ti consentiranno di bloccare determinate versioni in modo che siano idonee per l'aggiornamento.

Se desideri utilizzarlo solo per gli script e non impostarlo come predefinito per il sistema, puoi inserire le regole in un'altra posizione e utilizzarlo invece:

apt-get -o Dir::Etc::Preferences=/path/to/preferences_file upgrade

Questo farà sì che apt cerchi il file delle preferenze da una posizione non predefinita.

Il file delle preferenze fornito come esempio non si applica ai repository di terze parti, se desideri bloccare anche quelli puoi utilizzare apt-cache policy per determinare facilmente le chiavi richieste per il blocco.

    
risposta data Ressu 29.07.2010 - 06:12
9

Quanto segue è confermato in Ubuntu 14.04 LTS.

Utilizza il pacchetto unattended-upgrade .

Guarda il file /etc/apt/apt.conf.d/50unattended-upgrades . Dovrebbe esserci una sezione in alto che è:

// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}-security";
//  "${distro_id}:${distro_codename}-updates";
//  "${distro_id}:${distro_codename}-proposed";
//  "${distro_id}:${distro_codename}-backports";
};

Nota come è stato configurato per consentire solo aggiornamenti automatici per i pacchetti di sicurezza, per impostazione predefinita.

Modifica il file /etc/apt/apt.conf.d/10periodic simile a:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

Questo eseguirà aggiornamenti automatici di sicurezza non presidiati, una volta al giorno.

Ora, per eseguire manualmente: sudo unattended-upgrade .

Per testare come una corsa a secco, senza fare nulla: sudo unattended-upgrade --dry-run .

Fonte: link

    
risposta data vcardillo 03.10.2016 - 19:18
5

Anche se è piuttosto brutto, puoi disabilitare tutti i repository oltre al repository di sicurezza e poi fare:

sudo apt-get update && sudo apt-get upgrade

Non l'ho provato, ma in teoria troverei solo aggiornamenti nel repository di sicurezza e li applicherò ...

    
risposta data Stephen RC 29.07.2010 - 02:00
3
  • %codice%: basta leggere le voci nel repository - secondo la lista esistente. Necessario per controllare cosa è nuovo.
  • apt-get update : tutti gli aggiornamenti per i pacchetti installati senza moduli del kernel. Nessun aggiornamento della versione.
  • apt-get upgrade : tutti gli aggiornamenti per i pacchetti installati anche con i moduli del kernel. Nessun aggiornamento della versione.
  • apt-get dist-upgrade con parametro apt-get : solo test, nessuna modifica eseguita.
risposta data fuser 02.08.2013 - 11:49
0

Non riesco a trovare un'opzione in apt-get o aptitude, tuttavia qualcuno ha stessa domanda su SuperUser. L'unica risposta è:

  

Controlla e regola /etc/apt/apt.conf.d/50unattended-upgrade. Hai sostituito 'karmic' con il nome in codice di Ubuntu?

Nessuna risposta sul fatto che ciò abbia funzionato comunque.

    
risposta data Ross 29.07.2010 - 01:04

Leggi altre domande sui tag