Come saltare l'aggiornamento del kernel?


25

Sto eseguendo Ubuntu 12.04.1 LTS i686 su VirtulBox. Ogni volta che controllo gli aggiornamenti, c'è un nuovo kernel Linux. Se installo il nuovo kernel, devo installare nuovamente Virtulbox Guest Additions e riavviare il server. Non voglio farlo ogni settimana. So di poter deselezionare manualmente i pacchetti del kernel dal gestore aggiornamenti, ma c'è un modo per saltare automaticamente l'aggiornamento del kernel? Ho trovato una risposta qui, ma è per Ubuntu 10. Grazie.

Risposte:


18

APT (Advanced Packaging Tool) è il sistema che Ubuntu utilizza per gestire tutto il software installato su un sistema. Ti consente di "bloccare" un pacchetto su una determinata versione, in modo tale che non venga aggiornato durante l'esecuzione di Update Manager.

Per bloccare i pacchetti del kernel, devi prima determinare quale versione è il tuo kernel. Un modo per farlo è aprire il Gestore pacchetti Synaptic in Sistema> Amministrazione.

inserisci qui la descrizione dell'immagine

Digita "linux-generic" nel campo di testo Ricerca rapida e premi invio.

inserisci qui la descrizione dell'immagine

Prendi nota del numero elencato nella colonna "Versione installata". Lo useremo nel prossimo passaggio.

Successivamente, dobbiamo modificare il file / etc / apt / preferenze. Aprilo premendo Alt + F2 per visualizzare la finestra Esegui applicazione ed entrando in:

gksudo gedit /etc/apt/preferences

inserisci qui la descrizione dell'immagine

Questo aprirà una finestra di gedit. Molto probabilmente la finestra sarà vuota, a meno che tu non abbia mai giocato con APT prima.

Nella finestra, digitare quanto segue, sostituendo il numero di versione con il numero di versione trovato in Synaptic Package Manager.

Package: linux-generic linux-headers-generic linux-image-generic linux-restricted-modules-generic
Pin: version <insert version here>
Pin-Priority: 1001

inserisci qui la descrizione dell'immagine

Salva il file e chiudi gedit. Se apri Update Manager, dovresti vedere che gli aggiornamenti del kernel di Linux sono ora nascosti!

inserisci qui la descrizione dell'immagine

fonte

Blocco dei pacchetti con APT / DPKG

Ricorda il nome del pacchetto del tuo kernel dall'alto.

Apri un terminale ed esegui:

sudo -s

E colpisci enter.

Inserisci la tua password per sudo:

echo kernel_package_name hold | dpkg --set-selections

Sostituisci kernel_package_namecon il nome del kernel che vuoi aggiungere.

Ora esegui:

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

Per rimuovere il pin da Apt / Dpkg:

Apri un terminale

sudo -s
echo kernel_package install | dpkg --set-selections

Sostituisci kernel_package con il pacchetto che vuoi aggiungere.

Ora esegui:

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

fonte

Quello che stai cercando di fare si chiama pinning. Le fonti che ti ho dato sopra, hanno gli elementi essenziali su cosa devi fare per svolgere i tuoi compiti in mano.


1
Grazie per la tua risposta. Sembra che stiamo usando una versione diversa. Non ho Synaptic Package Manager e / etc / apt / preferenze sul mio Ubuntu 12.04.
Garconcn,

2
Sì, Synaptic non è più installato per impostazione predefinita.
Ish,

1
@garconcn, puoi installare Synaptic e installare la correzione che ti ho detto, o leggere di nuovo la domanda, dato che ho messo più informazioni su di essa
LnxSlck

2
@LnxSlck, ho installato Synaptic e ho seguito le tue istruzioni. Funziona. Grazie.
Garconcn,

16

In una riga è:

echo $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}') hold | dpkg --set-selections

Di questo kernel set dichiareranno immagine da installare a hold e quindi impedirà gli aggiornamenti.


8

Il one-liner di Christoph non tiene conto del pacchetto aggiuntivo (ad esempio linux-image-extra-3.13.0-45-generic). Piuttosto usa questo:

per i in $ (dpkg -l "* $ (uname -r) *" | immagine grep | awk '{print $ 2}'); echo $ tengo premuto | dpkg --set-selections; fatto

4

In relazione al suggerimento di superlexx: a quella riga mancherà il pacchetto "headers":

dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic

Che ne dici di usare semplicemente quanto segue:

dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'
linux-headers-3.13.0-48-generic
linux-image-3.13.0-48-generic
linux-image-extra-3.13.0-48-generic

1
Se i pacchetti extra / header / etc non sono contrassegnati, ci sono problemi? Oppure, stai suggerendo di contrassegnarli anche per completezza? Mi aspetto che Ubuntu non tenti di installare un pacchetto di intestazioni aggiornato, fino a quando non viene installata l'immagine di Linux (le intestazioni sono una dipendenza dell'immagine). Devo ancora verificarlo.
whitehat101

2
Ragazzi, potreste collaborare a una sola fodera anziché impilare 3 risposte una sull'altra. = P Basta
dire

1
Non è necessario invocare grep se stai già usando awk:dpkg -l "*$(uname -r)*" | awk '/kernel/{print $2}'
Javier López,

1

Questo elimina i pacchetti del meta kernel che abilitano gli aggiornamenti del kernel:

sudo apt purge $(apt-cache rdepends -i --installed linux-{headers,image}-$(uname -r)|awk '!/[0-9]/ && /^[ ]/{print $1}')

(Se hai appena aggiornato il kernel, devi prima riavviare con il nuovo kernel, oppure trovare l'ultima versione del kernel e usarla sopra invece di "$ (uname -r)".)

Si consiglia di installare gli aggiornamenti dei kernel, poiché si tratta principalmente di aggiornamenti di sicurezza.


0

Su Ubuntu 16.04.1, il seguente codice funziona

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i hold | sudo dpkg --set-selections; done

è un miglioramento del codice di Superlexx, sudoviene aggiunto

dpkg -l | grep linux-image

Troverai:

ciao linux-image-4.4.0-34-generico ...

ciao linux-image-extra-4.4.0-34-generico ...

si noti che il tag ora legge hi, nonii

per rimuovere il perno

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i install | sudo dpkg --set-selections; done

Bella risposta ma hai inserito sudonel commento non il comando ...
WinEunuuchs2Unix

0

Versione più breve: (Sostituisci "hold" con "install" per rimuovere il pin)

 dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2,"hold"}' | sudo dpkg --set-selections

Per vedere lo stato di tutte le immagini e le intestazioni del kernel, eseguire:

 dpkg --get-selections | grep "linux-"
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.