Блокировка обновлений ядра с помощью dpkg


16

Я хотел бы заблокировать все поставляемые с дистрибутивом обновления ядра из-за неприятной вещи, которая недавно произошла со мной. (Я нахожусь на производной Ubuntu 12.04 amd64.)

Я хотел бы, чтобы блокировать все обновления установленных ядер минорной версии 3.2 к linux-headers, linux-headers-generic, linux-imageи linux-image-extraпакеты. Проблема, с которой я сталкиваюсь, состоит в том, что все они имеют версию, и если я блокирую определенную версию, ничего не получается, потому что будет установлена ​​новая версия (например: если я блокирую linux-image-3.2.0-35, linux-image-3.2.0-36не блокируется и все еще потенциально может быть установлен с помощью dist-upgradefrom apt.)


Обратите внимание, что это больше не работает в Ubuntu 16.04. Вы должны занести в черный список пакеты, используя это руководство: help.ubuntu.com/lts/serverguide/automatic-updates.html
user199618

Ответы:


17

Вам нужно использовать функцию apt-get, называемую холдингом.

Вы можете сделать это через Synaptic или Dpkg. Вот как я буду держать свое ядро, используя метод dpkg.

Сначала проверьте имя образа вашего ядра

dpkg -l | grep linux-image

вывод для меня:

ii  linux-image-3.2.0-4-amd64              3.2.35-2                           amd64        Linux 3.2 for 64-bit PCs
ii  linux-image-amd64                      3.2+46                             amd64        Linux for 64-bit PCs (meta-package)

затем скажите dpkg держать метапакет (универсальная версия без номеров версий)

echo linux-image-amd64 hold | sudo dpkg --set-selections

Вы можете проверить это с помощью dpkg -l linux-image-amd64

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                       Version            Architecture       Description
+++-==========================-==================-==================-==========================================================
hi  linux-image-amd64          3.2+46             amd64              Linux for 64-bit PCs (meta-package)

Обратите внимание на «привет» внизу, h означает «удерживается», а «i» означает, что в данный момент установлено. Этот пакет установлен, но не будет обновлен.

Вы можете изменить это через

echo linux-image-amd64 install | sudo dpkg --set-selections

и снова можете проверить через dpkg -l linux-image-amd64

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                       Version            Architecture       Description
+++-==========================-==================-==================-==========================================================
ii  linux-image-amd64          3.2+46             amd64              Linux for 64-bit PCs (meta-package)

Обратите внимание на «ii», первый i означает, что этот пакет установлен для установки, а второй i означает, что он установлен в данный момент. Этот пакет установлен и будет обновлен.

Для получения дополнительной информации об этих флагах см. man dpkgРазделы «Состояния выбора пакета».


1
Мои имена изображений здесь . Хочу ли я запретить "linux-image-generic"?
Нафтули Кей

1
@TKKocheran да; Вы хотите использовать метапакет, а не конкретную версию.
CJH

Не работает - dpkg: warning: пакет не находится ни в статусе, ни в базе данных в строке 1: linux-image-amd64 dpkg: warning: найдены неизвестные пакеты; это может означать, что доступная база данных устарела и нуждается в обновлении с помощью метода внешнего интерфейса; пожалуйста, смотрите FAQ < wiki.debian.org/Teams/Dpkg/FAQ >
Arturas M
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.