GNU/Linux >> Znalost Linux >  >> Ubuntu

Proč Apt-get Autoremove neodstraní stará jádra?

Můj spouštěcí oddíl je na SSD, takže tam není místo pro více než 8 nainstalovaných verzí jádra a nakonec se některá aktualizace jádra nenainstaluje, protože můj spouštěcí oddíl je plný starých verzí. Existuje mnoho otázek o tom, jak odstranit staré verze (dokonce i jak tento proces zautomatizovat), ale moje otázka je jednoduše tato:Proč apt-get autoremove automaticky je detekovat a odstranit a existuje způsob, jak to mohu provést ? Myslím, apt-get je to, co je stejně nainstalovalo, takže o nich ví, tak proč se rozhodl nechat všechny staré verze?

Nejlepší odpověď

Odpověď proč najdete v souboru /etc/apt/apt.conf.d/01autoremove-kernels

Jak můžete vidět, aptu je řečeno, aby nikdy automaticky neodstraňoval jádra , jak říká jiný soubor (script), /etc/kernel/postinst.d/apt-auto-removal . A tady to je:

Pokud ručně nainstalujete 2 vybraná jádra, tj. první a aktuální, apt-autoremove vždy odstraní pouze starší verze, které jste ručně nenainstalovali, takže budete mít vždy tyto 2 možnosti plus ať už je ta nejnovější.

Aktualizace:

V /etc/kernel/postinst.d/apt-auto-removal je tu tato část:

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

Pokud tedy porovnáte výstup 01autoremove-kernels soubor a uname -r uvědomíte si, že aktuálně běžící jádro a nejnovější před ním jsou udržovány tak, aby je tento skript nikdy neodstranil. Ukázalo se, že existuje další soubor /etc/apt/apt.conf.d/01autoremove , kde jsou řádky:

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

Můžete je tedy okomentovat a umožní vám to automaticky odstranit jádra pomocí apt-autoremove , ale pamatujte – to děláte na vlastní nebezpečí


Ubuntu
  1. Proč se Tilda (~) nerozšíří uvnitř dvojitých uvozovek?

  2. Proč skript Bash nerozpozná aliasy?

  3. Proč nefunguje ~/.bash_profile?

  1. Grep – Proč závorky ve vzoru Grep odstraňují proces Grep z výsledků PS?

  2. Linux – Proč Apt Autoremove neodstraní všechny staré balíčky jádra najednou?

  3. Spustím `sudo Apt-get Remove Python2.7`, mohu nyní obnovit Ubuntu?

  1. Proč vůbec existuje oddělení aktualizace a upgradu?

  2. Apt-get Ekvivalent „aptitude Proč“?

  3. Proč PC nepřehrává DVD?