Jak pominąć aktualizację jądra?


25

Używam Ubuntu 12.04.1 LTS i686 na VirtulBox. Za każdym razem, gdy sprawdzam aktualizacje, pojawia się nowe jądro Linuksa. Jeśli zainstaluję nowe jądro, muszę ponownie zainstalować Dodatki dla gości Virtulbox i ponownie uruchomić serwer. Nie chcę tego robić co tydzień. Wiem, że mogę ręcznie odznaczyć pakiety jądra z menedżera aktualizacji, ale czy istnieje sposób na automatyczne pominięcie aktualizacji jądra? Znalazłem odpowiedź tutaj, ale dotyczy Ubuntu 10. Dzięki.

Odpowiedzi:


18

APT (Advanced Packaging Tool) to system używany przez Ubuntu do zarządzania całym oprogramowaniem zainstalowanym w systemie. Pozwala „przypiąć” pakiet do określonej wersji, aby nie był aktualizowany po uruchomieniu Menedżera aktualizacji.

Aby przypiąć pakiety jądra, najpierw musisz ustalić, jaka jest wersja twojego jądra. Jednym ze sposobów na to jest otwarcie Menedżera pakietów Synaptic w System> Administracja.

wprowadź opis zdjęcia tutaj

Wpisz „linux-generic” w polu tekstowym Szybkie wyszukiwanie i naciśnij Enter.

wprowadź opis zdjęcia tutaj

Zanotuj numer wymieniony w kolumnie „Zainstalowana wersja”. Wykorzystamy go w następnym kroku.

Następnie musimy edytować plik / etc / apt / preferencje. Otwórz go, naciskając klawisze Alt + F2, aby wyświetlić okno Uruchom aplikację i wpisując:

gksudo gedit /etc/apt/preferences

wprowadź opis zdjęcia tutaj

Otworzy się okno GEDIT. Najprawdopodobniej okno będzie puste, chyba że wcześniej bawiłeś się APT.

W oknie wpisz następujące polecenie, zastępując numer wersji numerem wersji znalezionym w Menedżerze pakietów Synaptic.

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

wprowadź opis zdjęcia tutaj

Zapisz plik i zamknij gedit. Jeśli otworzysz Menedżera aktualizacji, powinieneś zobaczyć, że aktualizacje jądra Linuksa są teraz ukryte!

wprowadź opis zdjęcia tutaj

Źródło

Blokowanie pakietów za pomocą APT / DPKG

Zapamiętaj nazwę pakietu twojego jądra z góry.

Otwórz terminal i uruchom:

sudo -s

I uderzył enter.

Wpisz swoje hasło do sudo:

echo kernel_package_name hold | dpkg --set-selections

Zamień kernel_package_namena nazwę jądra, które chcesz przypiąć.

Teraz uruchom:

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

Aby usunąć pin z Apt / Dpkg:

Otwórz terminal

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

Zamień pakiet kernel_package na pakiet, który chcesz przypiąć.

Teraz uruchom:

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

Źródło

To, co próbujesz zrobić, nazywa się przypinaniem. Źródła, które podałem powyżej, zawierają niezbędne informacje na temat tego, co musisz zrobić, aby wykonać swoje zadania.


1
Dzięki za odpowiedź. Wygląda na to, że korzystamy z innej wersji. Nie mam Menedżera pakietów Synaptic i preferencji / etc / apt / na moim Ubuntu 12.04.
garconcn

2
Tak, Synaptic nie jest już domyślnie instalowany.
ish

1
@garconcn, możesz zainstalować Synaptic i zainstalować poprawkę, którą ci powiedziałem, lub ponownie przeczytać pytanie, ponieważ zamieściłem na ten temat więcej informacji
LnxSlck

2
@LnxSlck, zainstalowałem Synaptic i postępowałem zgodnie z twoimi instrukcjami. To działa. Dzięki.
garconcn

16

W jednej linii jest to:

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

Spowoduje to ustawienie stanu obrazu jądra z instalacji do wstrzymania, a tym samym zapobiegnie aktualizacjom.


8

One-liner firmy Christoph nie bierze pod uwagę dodatkowego pakietu (np. Linux-image-extra-3.13.0-45-generic). Raczej użyj tego:

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

4

W odniesieniu do sugestii superlexx: ta linia nie będzie zawierała pakietu „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

A może po prostu skorzystasz z następujących opcji:

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
Jeśli pakiety dodatków / nagłówków / etc nie są zaznaczone, czy występują problemy? A może sugerujesz je również oznaczyć dla kompletności? Spodziewałbym się, że Ubuntu nie będzie próbował zainstalować zaktualizowanego pakietu nagłówków, dopóki nie zostanie zainstalowany obraz linux (nagłówki zależą od obrazu). Muszę to jeszcze zweryfikować.
whitehat101

2
Możecie współpracować na jednej linijce zamiast układać na sobie 3 odpowiedzi. = P Po prostu
powiedz

1
Nie trzeba wywoływać grep, jeśli już używasz awk:dpkg -l "*$(uname -r)*" | awk '/kernel/{print $2}'
Javier López

1

Czyści meta pakiety jądra, które umożliwiają aktualizacje jądra:

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

(Jeśli właśnie zaktualizowałeś jądro, musisz najpierw uruchomić się ponownie z nowym jądrem lub znaleźć najnowszą wersję jądra i użyć go powyżej zamiast „$ (uname -r)”.)

Zaleca się jednak instalowanie aktualizacji jądra, ponieważ są to głównie aktualizacje bezpieczeństwa.


0

W systemie Ubuntu 16.04.1 działa następujący kod

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

jest ulepszeniem kodu Superlexx, sudododaje się

dpkg -l | grep linux-image

Znajdziesz:

cześć linux-image-4.4.0-34-generic ...

cześć linux-image-extra-4.4.0-34-generic ...

zwróć uwagę, że tag teraz czyta hi, a nieii

usunąć pin

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

sudo
Dobra

0

Krótsza wersja: (Zamień „przytrzymaj” na „zainstaluj”, aby usunąć pin)

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

Aby zobaczyć stan wszystkich obrazów jądra i nagłówków, uruchom:

 dpkg --get-selections | grep "linux-"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.