GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Perché Apt-get Autoremove non rimuove i vecchi kernel?

La mia partizione di avvio è su un SSD, quindi non ha spazio per più di circa 8 versioni del kernel installate e alla fine alcuni aggiornamenti del kernel non verranno installati perché la mia partizione di avvio è piena di vecchie versioni. Ci sono molte domande là fuori su come rimuovere le vecchie versioni (anche su come automatizzare il processo), ma la mia domanda è semplicemente questa:Perché non apt-get autoremove rilevarli e rimuoverli automaticamente e c'è un modo in cui posso farlo ? Voglio dire, apt-get è ciò che li ha installati comunque, quindi li conosce, quindi perché sceglie di lasciare tutte le vecchie versioni in giro?

Migliore risposta

Per rispondere al motivo, fare riferimento al file /etc/apt/apt.conf.d/01autoremove-kernels

Come puoi vedere, ad apt viene detto di non rimuovere mai automaticamente i kernel , come indicato da un altro file (script), /etc/kernel/postinst.d/apt-auto-removal . Ed eccolo qui:

Se installi manualmente 2 kernel scelti, ovvero il primo e quello attuale, apt-autoremove rimuoverà sempre e solo le versioni precedenti che non hai installato manualmente, quindi avrai sempre quelle 2 opzioni più qualunque sia l'ultima.

Aggiornamento:

Nel /etc/kernel/postinst.d/apt-auto-removal c'è questa parte:

if [ "$latest_version" != "$installed_version" ] 
   || [ "$latest_version" != "$running_version" ] 
   || [ "$installed_version" != "$running_version" ]
then
        # We have at least two kernels that we have reason to think the
        # user wants, so don't save the second-newest version.
        previous_version=
fi

Quindi, se confronti l'output di 01autoremove-kernels file e uname -r ti renderai conto che il kernel attualmente in esecuzione e il più recente precedente non vengono mai rimossi da quello script. Si scopre che c'è un altro file /etc/apt/apt.conf.d/01autoremove , dove sono presenti le righe:

    APT
    {
      NeverAutoRemove
      {
            "^firmware-linux.*";
            "^linux-firmware$";
      };
  VersionedKernelPackages
  {
        # linux kernels
        "linux-image";
        "linux-headers";
        "linux-image-extra";
        "linux-signed-image";
        # kfreebsd kernels
        "kfreebsd-image";
        "kfreebsd-headers";
        # hurd kernels
        "gnumach-image";
        # (out-of-tree) modules
        ".*-modules";
        ".*-kernel";
        "linux-backports-modules-.*";
        # tools
        "linux-tools";
  };

Quindi potresti commentarli e ti consentirà di rimuovere automaticamente i kernel con apt-autoremove , però ricorda:fallo a tuo rischio e pericolo


Ubuntu
  1. Perché The Tilde (~) non si espande all'interno di virgolette doppie?

  2. Perché lo script Bash non riconosce gli alias?

  3. Perché il ~/.bash_profile non funziona?

  4. Grep:perché le parentesi nel modello Grep rimuovono il processo Grep dai risultati di Ps?

  5. Linux:perché Apt Autoremove non rimuove tutti i vecchi pacchetti del kernel in una volta?

Come rimuovere i vecchi kernel su Ubuntu 16.04, 18.04 e 19.04

Come rimuovere i vecchi kernel su Ubuntu

Come rimuovere i collegamenti su Google Chrome

Come rimuovere le vecchie versioni del kernel per ripulire il menu di avvio?

Perché i recuperi di aggiornamento di Apt-get sono così grandi??

Perché Cryptkeeper non funziona in 12.04?