Wie überspringe ich das Kernel-Update?

25

Ich verwende Ubuntu 12.04.1 LTS i686 auf VirtulBox. Jedes Mal, wenn ich die Updates überprüfe, gibt es einen neuen Linux-Kernel. Wenn ich den neuen Kernel installiere, muss ich die Virtulbox Guest Additions erneut installieren und den Server neu starten. Ich möchte das nicht jede Woche machen. Ich weiß, dass ich die Kernelpakete im Update Manager manuell deaktivieren kann, aber gibt es eine Möglichkeit, das Kernel-Update automatisch zu überspringen? Ich habe hier eine Antwort gefunden, aber es ist für Ubuntu 10. Danke.

garconcn
quelle

Antworten:

18

APT (Advanced Packaging Tool) ist das System, mit dem Ubuntu die gesamte auf einem System installierte Software verwaltet. Sie können ein Paket an eine bestimmte Version „heften“, damit es nicht aktualisiert wird, wenn Sie den Update Manager ausführen.

Um Ihre Kernelpakete zu pinnen, müssen Sie zuerst feststellen, welche Version Ihr Kernel hat. Eine Möglichkeit, dies zu tun, besteht darin, den Synaptic Package Manager unter System> Administration zu öffnen.

Bildbeschreibung hier eingeben

Geben Sie im Textfeld für die Schnellsuche "linux-generic" ein und drücken Sie die Eingabetaste.

Bildbeschreibung hier eingeben

Notieren Sie sich die in der Spalte „Installierte Version“ aufgeführte Nummer. Wir werden es im nächsten Schritt verwenden.

Als nächstes müssen wir die Datei / etc / apt / preferences bearbeiten. Öffnen Sie es, indem Sie Alt + F2 drücken, um das Fenster "Anwendung ausführen" aufzurufen, und geben Sie Folgendes ein:

gksudo gedit /etc/apt/preferences

Bildbeschreibung hier eingeben

Dies öffnet ein gedit-Fenster. Höchstwahrscheinlich ist das Fenster leer, es sei denn, Sie haben zuvor mit APT herumgespielt.

Geben Sie im Fenster Folgendes ein und ersetzen Sie die Versionsnummer durch die Versionsnummer, die Sie im Synaptic Package Manager gefunden haben.

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

Bildbeschreibung hier eingeben

Speichern Sie die Datei und schließen Sie gedit. Wenn Sie den Update Manager öffnen, sollten Sie sehen, dass die Linux-Kernel-Updates jetzt ausgeblendet sind!

Bildbeschreibung hier eingeben

Quelle

Pakete mit APT / DPKG blockieren

Merken Sie sich den Paketnamen Ihres Kernels von oben.

Öffnen Sie ein Terminal und führen Sie Folgendes aus:

sudo -s

Und getroffen enter.

Geben Sie Ihr Passwort für sudo ein:

echo kernel_package_name hold | dpkg --set-selections

Ersetzen Sie kernel_package_namedurch den Namen des Kernels, den Sie anheften möchten.

Führen Sie nun Folgendes aus:

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

So entfernen Sie den Stift aus Apt / Dpkg:

Öffnen Sie ein Terminal

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

Ersetzen Sie kernel_package durch das Paket, das Sie anheften möchten.

Führen Sie nun Folgendes aus:

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

Quelle

Was Sie versuchen zu tun, heißt Feststecken. Die Quellen, die ich Ihnen oben gegeben habe, enthalten die wesentlichen Informationen darüber, was Sie tun müssen, um Ihre Aufgaben zu erfüllen.

LnxSlck
quelle
1
Danke für deine Antwort. Es scheint, dass wir eine andere Version verwenden. Ich habe keinen Synaptic Package Manager und / etc / apt / preferences auf meinem Ubuntu 12.04.
Garconcn
2
Ja, Synaptic wird standardmäßig nicht mehr installiert.
ish
1
@garconcn, Sie können Synaptic installieren und das Update installieren, das ich Ihnen gesagt habe, oder die Frage erneut lesen, da ich mehr Informationen dazu gegeben habe
LnxSlck
2
@LnxSlck, ich habe Synaptic installiert und bin Ihren Anweisungen gefolgt. Es klappt. Vielen Dank.
Garconcn
16

In einer Zeile ist es:

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

Dadurch wird der Image-Status des Kernels von " install" auf " hold" gesetzt und Aktualisierungen verhindert.

Christoph
quelle
8

Der Einzeiler von Christoph berücksichtigt das Zusatzpaket nicht (zB linux-image-extra-3.13.0-45-generic). Benutze lieber diesen:

für i in $ (dpkg -l "* $ (uname -r) *" | grep image | awk '{print $ 2}'); echo $ i hold | dpkg --set-selections; getan
Superlexx
quelle
4

In Relation Superlexx Vorschlag: Diese Zeile wird das "Header" -Paket verpassen:

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

Wie wäre es also einfach mit den folgenden:

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
Wolkenlieferant
quelle
1
Wenn die Pakete extras / headers / etc nicht markiert sind, gibt es Probleme? Oder schlagen Sie vor, diese auch der Vollständigkeit halber zu kennzeichnen? Ich würde erwarten, dass Ubuntu nicht versuchen würde, ein aktualisiertes Header-Paket zu installieren, bis das Linux-Image installiert wurde (Header sind eine Abhängigkeit des Images). Ich muss das noch überprüfen.
Whitehat101
2
Ihr könntet an einem einzigen Einzeiler zusammenarbeiten, anstatt drei Antworten übereinander zu stapeln. = P Sag einfach
cubuspl42
1
Es ist unnötig, grep aufzurufen, wenn Sie awk bereits verwenden:dpkg -l "*$(uname -r)*" | awk '/kernel/{print $2}'
Javier López,
1

Dies löscht Meta-Kernel-Pakete, die Kernel-Updates ermöglichen:

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

(Wenn Sie gerade ein Kernel-Upgrade durchgeführt haben, müssen Sie zuerst mit dem neuen Kernel einen Neustart durchführen oder die neueste Kernel-Version finden und diese oben anstelle von "$ (uname -r)" verwenden.)

Es wird jedoch empfohlen, Kernel-Updates zu installieren, da es sich hauptsächlich um Sicherheitsupdates handelt.

jarno
quelle
0

Unter Ubuntu 16.04.1 funktioniert der folgende Code

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

Dies ist eine Verbesserung des Superlexx-Codes, der sudohinzugefügt wird

dpkg -l | grep linux-image

Du wirst finden:

hi linux-image-4.4.0-34-generic ...

hi linux-image-extra-4.4.0-34-generic ...

Beachten Sie, dass das Tag jetzt lautet hi, nichtii

Stift entfernen

for i in $(dpkg -l "*$(uname -r)*" | grep image | awk '{print $2}'); do echo $i install | sudo dpkg --set-selections; done
Chen Deng-Ta
quelle
Schöne Antwort, aber Sie sudoin den Kommentar nicht den Befehl ...
WinEunuuchs2Unix
0

Kürzere Version: (Ersetzen Sie "hold" durch "install", um den Pin zu entfernen)

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

Führen Sie Folgendes aus, um den Status aller Kernel-Images und -Header anzuzeigen:

 dpkg --get-selections | grep "linux-"
Per Mejdal Rasmussen
quelle