Як пропустити оновлення ядра?


25

Я запускаю Ubuntu 12.04.1 LTS i686 на VirtulBox. Кожен раз, коли я перевіряю оновлення, з’являється нове ядро ​​Linux. Якщо я встановлю нове ядро, мені доведеться знову встановити додатки для гостей Virtulbox і перезавантажити сервер. Я не хочу робити це щотижня. Я знаю, що я можу зняти прапорці ядер у менеджері оновлень вручну, але чи є спосіб пропустити оновлення ядра автоматично? Тут я знайшов відповідь, але це для Ubuntu 10. Дякую.

Відповіді:


18

APT (Advanced Packaging Tool) - це система, яку Ubuntu використовує для управління всім програмним забезпеченням, встановленим у системі. Це дозволяє "прикріпити" пакет до певної версії, щоб він не оновлювався під час запуску Менеджера оновлень.

Щоб закріпити ваші пакети ядра, спочатку слід визначити, яка версія вашого ядра. Один із способів зробити це - відкрити диспетчер пакетів Synaptic у системі> Адміністрація.

введіть тут опис зображення

Введіть “linux-generic” у текстовому полі швидкого пошуку та натисніть клавішу Enter.

введіть тут опис зображення

Запишіть номер, вказаний у стовпці «Встановлена ​​версія». Ми будемо використовувати його на наступному кроці.

Далі нам потрібно відредагувати налаштування файлу / etc / apt /. Відкрийте його, натиснувши Alt + F2, щоб відкрити вікно Запустити додаток і ввести:

gksudo gedit /etc/apt/preferences

введіть тут опис зображення

Це відкриє вікно gedit. Швидше за все, вікно буде порожнім, якщо ви раніше не грали з APT.

У вікні введіть наступне, замінивши номер версії на номер версії, який ви знайшли в Synaptic Package Manager.

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

введіть тут опис зображення

Збережіть файл і закрийте gedit. Якщо ви відкриєте Менеджер оновлень, ви побачите, що оновлення ядра Linux тепер приховані!

введіть тут опис зображення

Джерело

Блокування пакетів за допомогою APT / DPKG

Запам'ятайте назву пакета вашого ядра зверху.

Відкрийте термінал і запустіть:

sudo -s

І вдарити enter.

Введіть свій пароль для sudo:

echo kernel_package_name hold | dpkg --set-selections

Замініть kernel_package_nameім’я ядра, яке ви хочете прикріпити.

Тепер запустіть:

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

Щоб видалити штифт з Apt / Dpkg:

Відкрийте термінал

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

Замініть kernel_package на пакет, який потрібно прикріпити.

Тепер запустіть:

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

Джерело

Те, що ви намагаєтеся зробити, називається закріпленням. У джерелах, які я вам наводив вище, є основні відомості про те, що ви повинні зробити для виконання своїх завдань.


1
Дякуємо за Ваш відповідь. Здається, ми використовуємо іншу версію. У мене на Ubuntu 12.04 у мене немає Synaptic Package Manager та / etc / apt /.
garconcn

2
Так, Synaptic більше не встановлений за замовчуванням.
Останній

1
@garconcn, ви можете встановити Synaptic і встановити виправлене, яке я вам сказав, або прочитати питання ще раз, оскільки я поставив більше інформації про нього
LnxSlck

2
@LnxSlck, я встановив Synaptic і дотримувався вашої інструкції. Це працює. Спасибі.
garconcn

16

В одному рядку це:

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

Стан зображення Це встановить ядра від установки для утримання і таким чином запобігає оновлення.


8

Крістоф однолінійний не враховує додатковий пакет (наприклад, linux-image-extra-3.13.0-45-generic). Скоріше скористайтеся цим:

для i в $ (dpkg -l "* $ (unme -r) *" | grep image | awk '{print $ 2}'); робити відлуння $ я тримаю | dpkg - набір виділень; зроблено

4

Що стосується пропозиції superlexx: цей рядок буде пропускати пакет "заголовки":

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

То як щодо простого використання наступного:

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
Якщо пакети додаткових / заголовків / тощо не позначені, чи є проблеми? Або ви пропонуєте позначити їх також для повноти? Я очікую, що Ubuntu не намагатиметься встановити оновлений пакет заголовків, поки не буде встановлено linux-образ (заголовки не залежать від зображення). Мені ще це потрібно підтвердити.
whitehat101

2
Ви, хлопці, могли б співпрацювати на одній одноклавішці замість того, щоб укладати 3 накладки один на одного. = P Just sayin
cubuspl42

1
Не потрібно займатись грепом, якщо ви вже використовуєте awk:dpkg -l "*$(uname -r)*" | awk '/kernel/{print $2}'
Хав'єр Лопес,

1

Це очищує пакети мета ядра, які дозволяють оновити ядро:

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

(Якщо ви тільки що оновили ядро, вам слід перезавантажити спочатку нове ядро ​​або знайти останню версію ядра та використовувати її вище, а не "$ (ун-р)".)

Рекомендується встановлювати оновлення ядер, хоча вони в основному є оновленнями безпеки.


0

У Ubuntu 16.04.1 працює наступний код

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

- це поліпшення коду Superlexx, sudoдодається

dpkg -l | grep linux-image

Ви знайдете:

привіт linux-image-4.4.0-34-generic ...

привіт linux-image-extra-4.4.0-34-generic ...

зауважте, що тег тепер читається hi, а неii

зняти шпильку

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

Гарна відповідь, але ви додали sudoв коментарі не команду ...
WinEunuuchs2Unix

0

Коротша версія: (Замініть "утримуйте" на "встановити", щоб видалити шпильку)

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

Щоб побачити стан усіх зображень та заголовків ядра, запустіть:

 dpkg --get-selections | grep "linux-"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.