Pacotes do grub na lista negra da instalação

3

Estou tentando bloquear pacotes GRUB de serem instalados (depois de tê-los removido). O problema é praticamente idêntico ao pacotes Blacklisting da instalação e até envolve o GRUB, que é exatamente o que o selecionado responder ilustrado fazendo.

No entanto, não funciona em 12.04 LTS usando a edição de imagem em nuvem.

Nos meus scripts para fazer tudo isso, primeiro excluo os pacotes envolvidos. Tem um prompt UNinstall chato, mas eu finalmente descobri como alimentá-lo respostas (veja link para a minha pergunta mais antiga) para fazê-lo seguir em frente. Depois que a desinstalação estiver concluída, eu executo comandos para editar o arquivo /etc/apt/apt.conf.d/01autoremove para adicionar a linha da lista negra do grub conforme mostrado na resposta da pergunta acima.

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*";
   };
 };

FYI, os comandos são prefixados com "EXECUTING" e mostrados dessa maneira como parte do mecanismo do meu script para mostrar o que está fazendo.

O arquivo /root/etc_apt_apt.conf.d_01autoremove neste caso é um backup do original, sendo comparado com o arquivo alterado já em seu lugar. Parece certo para mim. Então eu faço o comando com os mesmos nomes de pacotes sendo negados com o sufixo "-". E ainda assim os instala como novos pacotes:

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.

Um dos motivos pelos quais não quero instalá-los aqui é a imprevisibilidade dos prompts para os quais meu script precisa fornecer respostas de entrada. E isso não faz sentido para eles serem instalados quando estão na lista negra e não são realmente necessários.

FYI, para referência sobre o motivo pelo qual o GRUB não é necessário, estou usando a opção recomendada 2 em imagens do kernel do AWS EC2 PV-GRUB (AKIs) conforme descrito neste documento na AWS: link

Então, a grande questão: como evitar que esses pacotes sejam instalados?

    
por Skaperen 03.10.2012 / 19:34

1 resposta

3

Never-MarkAuto-Sections não faz o que você lê. Primeiro, é uma lista de seções (como admin ), não nomes de pacotes (como grub-pc ). Segundo, requer nomes exatos, não padrões de caractere curinga. Terceiro, ele não impede a instalação de um pacote de qualquer maneira: o que significa é que, se o pacote for puxado por uma dependência, ele não será marcado como instalado automaticamente.

O Grub é recomendado pela imagem padrão do kernel. Uma maneira fácil de não ser reinstalado é informar o APT para não seguir as dependências recomendadas, com --no-install-recommends na linha de comando ou APT::Install-Recommends "false"; in apt.conf . Eu não sei como ignorar uma dependência específica.

Você pode bloquear a instalação de um pacote, atribuindo-lhe uma prioridade negativa em /etc/apt/preferences , veja Como proibir que um pacote específico seja instalado? . Mas isso não resolverá seu problema, pois o APT ainda tentará extrair a dependência.

Você pode fazer um pacote grub-pc falso com equivs , veja Como falsificar uma versão de pacote instalada? . Isso é o que eu faria aqui: você tem o Grub, mas não é fornecido através de um pacote deb, então faça um pacote falso para dizer isso ao gerenciador de pacotes.

    
por Gilles 04.10.2012 / 02:47