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