Добавление в черный список пакетов grub от установки

Я пытаюсь заблокировать установку пакетов GRUB (после их очистки). Эта проблема практически идентична занесению в черный список пакетов после установки и даже включает GRUB, что именно и делает выбранный ответ.

Тем не менее, он не работает в 12.04 LTS с использованием издания с облачным изображением.

В моих скриптах, чтобы сделать все это, я сначала удаляю соответствующие пакеты. У него есть раздражающее приглашение UNinstall, но я наконец-то выяснил, как кормить его ответами (см. https://askubuntu.com/questions/195801/when-uninstall-all-grub-packages-for-ec2-ami- build-script-how-do-i-bypass-pr для моего старого вопроса), чтобы заставить его двигаться дальше. После завершения удаления я запускаю команды для редактирования файла /etc/apt/apt.conf.d/01autoremove , чтобы добавить строку черного списка grub, как показано в ответе на вопрос выше.

EXECUTING: diff -U999999 /root/etc_apt_apt.conf.d_01autoremove /etc/apt/apt.conf.d/01autoremove
--- /root/etc_apt_apt.conf.d_01autoremove       2012-04-20 10:21:55.000000000 +0000
+++ /etc/apt/apt.conf.d/01autoremove    2012-10-03 16:28:17.000000000 +0000
@@ -1,26 +1,27 @@
 APT
 {
   NeverAutoRemove
   {
        "^firmware-linux.*";
        "^linux-firmware$";
        "^linux-image.*";
        "^kfreebsd-image.*";
        "^linux-restricted-modules.*";
        "^linux-ubuntu-modules-.*";
        "^gnumach$";
        "^gnumach-image.*";
   };

   Never-MarkAuto-Sections
   {
        "metapackages";
        "restricted/metapackages";
        "universe/metapackages";
        "multiverse/metapackages";
        "oldlibs";
        "restricted/oldlibs";
        "universe/oldlibs";
        "multiverse/oldlibs";
+       "grub*";
   };
 };

К вашему сведению, команды начинаются с префикса «EXECUTING» и показываются таким образом как часть механизма моего сценария, чтобы показать, что он делает.

Файл /root/etc_apt_apt.conf.d_01autoremove в этом случае является резервной копией оригинала, по сравнению с измененным файлом, уже находящимся на его месте. Это выглядит правильно для меня. Затем я выполняю команду с теми же именами пакетов, которые отменяются суффиксом "-". И все же он по-прежнему устанавливает их как новые пакеты:

EXECUTING: apt-get --yes dist-upgrade grub-common- grub-gfxpayload-lists- grub-legacy-ec2- grub-pc- grub-pc-bin- grub2-common-
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  grub-common grub-gfxpayload-lists grub-pc grub-pc-bin grub2-common linux-image-3.2.0-31-virtual
The following packages will be upgraded:
  apport apt apt-transport-https apt-utils dbus gnupg gpgv isc-dhcp-client isc-dhcp-common libapt-inst1.4
  libapt-pkg4.12 libdbus-1-3 libgc1c2 libxml2 linux-firmware linux-image-virtual linux-virtual multiarch-support
  ntfs-3g openssl python-apport python-problem-report resolvconf tzdata ubuntu-keyring
25 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 45.4 MB of archives.
After this operation, 35.1 MB of additional disk space will be used.

Одна из причин, по которой я не хочу устанавливать их здесь, - непредсказуемость запросов, на которые мой сценарий должен направлять входные ответы. И это просто не имеет смысла для их установки, когда они были в черном списке, и на самом деле не нужны.

К вашему сведению, для справки о том, почему GRUB не нужен, я использую рекомендованную опцию 2 в образах ядра AWS EC2 PV-GRUB (AKI), как описано в этом документе на AWS: http: //docs.amazonwebservices .com / AWSEC2 / latest / UserGuide / UserProvidedkernels.html

Итак, большой вопрос: как вообще запретить установку этих пакетов?

3
задан 13 April 2017 в 15:25

1 ответ

Never-MarkAuto-Sections не делает то, что вы читаете, оно делает. Во-первых, это список разделов (например, admin), а не имена пакетов (например, grub-pc). Во-вторых, для этого нужны точные имена, а не шаблоны. В-третьих, это не мешает установке пакета в любом случае: это означает, что если пакет извлекается зависимостью, он не будет помечен как автоматически установленный.

Grub рекомендуется стандартным образом ядра. Простой способ не восстановить его - это сказать APT, что он не следует за зависимостями рекомендательного уровня, с --no-install-recommends в командной строке или APT::Install-Recommends "false"; в apt.conf. Я не знаю, как игнорировать конкретную зависимость.

Вы можете заблокировать установку пакета, задав ему отрицательный приоритет в /etc/apt/preferences , см. Как запретить установку определенного пакета? . Но это не решит вашу проблему, так как APT все равно будет пытаться получить зависимость.

Вы можете сделать поддельный пакет grub-pc с помощью equivs , см. Как подделать установленную версию пакета? . Вот что я бы сделал здесь: у вас есть Grub, но не предоставленный через пакет deb, поэтому создайте поддельный пакет, чтобы сообщить об этом менеджеру пакетов.

0
ответ дан 13 April 2017 в 15:25

Другие вопросы по тегам:

Похожие вопросы: