GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Por qué Apt-get Autoremove no elimina los núcleos antiguos?

Mi partición de arranque está en un SSD, por lo que no tiene espacio para más de 8 versiones de kernel instaladas y, eventualmente, algunas actualizaciones del kernel no se instalarán porque mi partición de arranque está llena de versiones antiguas. Hay muchas preguntas sobre cómo eliminar versiones antiguas (incluso cómo automatizar el proceso), pero mi pregunta es simplemente esta:¿Por qué apt-get autoremove? detectarlos y eliminarlos automáticamente, y ¿hay alguna forma en que pueda hacer que lo haga? ? Quiero decir, apt-get es lo que los instaló de todos modos, por lo que sabe sobre ellos, entonces, ¿por qué elige dejar todas las versiones antiguas?

Mejor respuesta

Para responder por qué, consulte el archivo /etc/apt/apt.conf.d/01autoremove-kernels

Como puede ver, se le dice a apt que nunca elimine automáticamente los kernels, como lo indica otro archivo (script), /etc/kernel/postinst.d/apt-auto-removal . Y aquí está:

Si instala manualmente 2 kernels elegidos, es decir, el primero y el actual, entonces apt-autoremove solo eliminará las versiones anteriores que no instaló manualmente, por lo que siempre tendrá esas 2 opciones más la última.

Actualización:

En el /etc/kernel/postinst.d/apt-auto-removal existe esta 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

Entonces, si compara la salida de 01autoremove-kernels archivo y uname -r se dará cuenta de que el kernel que se está ejecutando actualmente y el anterior más reciente se mantienen para que ese script nunca los elimine. Resulta que hay otro archivo /etc/apt/apt.conf.d/01autoremove , donde hay líneas:

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

Entonces podría comentarlos y le permitirá eliminar automáticamente los núcleos con apt-autoremove , aunque recuerda:hazlo bajo tu propio riesgo


Ubuntu
  1. Cómo eliminar kernels antiguos no utilizados en CentOS Linux

  2. Ejecuto `sudo Apt-get Remove Python2.7`, ¿puedo restaurar Ubuntu ahora?

  3. ¿Por qué existe la separación de actualización y actualización?

  4. Apt-get Equivalente de "aptitud ¿Por qué"?

  5. ¿Qué otro software está disponible para eliminar archivos/núcleos antiguos para aumentar el espacio y limpiar la unidad?

Cómo eliminar núcleos antiguos en Ubuntu 16.04, 18.04 y 19.04

Cómo eliminar kernels antiguos en Ubuntu

Cómo quitar los accesos directos en Google Chrome

¿Cómo eliminar versiones antiguas del kernel para limpiar el menú de arranque?

¿Por qué son tan grandes las recuperaciones de actualización de Apt-get?

¿Por qué Cryptkeeper no funciona en 12.04?