Mi partición de arranque está en un SSD, por lo que no tiene espacio para más de aproximadamente 8 versiones de kernel instaladas, y eventualmente alguna actualización del kernel no se instalará 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é no las apt-get autoremovedetecta y las elimina automáticamente, y hay alguna manera de que pueda hacerlo ? Quiero decir, apt-getes lo que los instaló de todos modos, por lo que sabe sobre ellos, entonces, ¿por qué elige dejar todas las versiones antiguas?
53

Respuestas:
En cuanto a por qué, consulte el archivo
/etc/apt/apt.conf.d/01autoremove-kernelsComo se puede ver, apto se le dice que nunca se AutoRemove los granos, según lo dicho por otro archivo (script),
/etc/kernel/postinst.d/apt-auto-removal. Y aquí está:Si instala manualmente 2 núcleos 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 cualquiera que sea la última.
Actualizar:
En el
/etc/kernel/postinst.d/apt-auto-removalhay esta parte:Entonces, si compara la salida del
01autoremove-kernelsarchivo yuname -rse dará cuenta de que el script que se está ejecutando actualmente y el más reciente, nunca se eliminará con ese script. Resulta que hay otro archivo/etc/apt/apt.conf.d/01autoremove, donde hay líneas:Así que podría comentarlos y le permitirá eliminar automáticamente los núcleos con
apt-autoremove, aunque recuerde: haga esto bajo su propio riesgofuente
/etc/apt/apt.conf.d/01autoremove-kernelstiene muchas líneas, pero solo dos versiones entre todas: 3.13.0. {39,43}. Perodpkg -l linux-*enumera cuatro versiones, 3.13.0. {39,40,41,43}, entonces algo más que/etc/apt/apt.conf.d/01autoremove-kernelsmantener esas versiones intermedias, ¿verdad?01autoremovees el archivo que desea,01autoremove-kernelsprobablemente sea solo una protección, de modo que apt no elimine el kernel instalado actualmente y el más reciente (por si acaso el más reciente lo arruina)01autoremove, solo protege contra la eliminación automática de los paquetes de dependencia, comolinux-image-extra. Cambiarlo no debería afectar silinux-image-3.16.0-31-genericse quita automáticamente o no . Ninguno de los patrones en él coincide con los nombres de paquetes que queremos eliminar automáticamente./etc/apt/apt.conf.d/01autoremove. Eso no lo ayuda a eliminar automáticamente los paquetes de kernel con versiones antiguas, pero puede tener efectos no deseados. El archivo no protege contra la eliminación automática,linux-image-extrasino paquetes que coinciden con expresiones regulares en laNeverAutoRemovesección.apt-get autoremovecual no elimina los núcleos que no figuran en la lista/etc/apt/apt.conf.d/01autoremove-kernelses que esos núcleos están marcados como instalados manualmente; ver a mi respuesta .Para mí, ayudó a instalar la última (X) ubuntu (15.10). En versiones anteriores, los paquetes del kernel pueden marcarse como instalados manualmente, al menos, si se instalan utilizando Software Updater, para que
sudo apt-get autoremove --purgeno se puedan eliminar. Hay informes de errores relacionados con el problema: error # 1175637 , error # 1439769En una versión anterior, podría intentar marcar los paquetes del núcleo instalados automáticamente
sudo apt-mark auto $(apt-mark showmanual | grep -E "^linux-([[:alpha:]]+-)+[[:digit:].]+-[^-]+(|-.+)$")y ejecutarlossudo apt-get autoremove --purgeposteriormente para ver si hay alguna diferencia. El comando aún no debe eliminar los paquetes de kernel que se muestran en /etc/apt/apt.conf.d/01autoremove-kernels, pero es más seguro ejecutar primeroapt-get autoremovecon la--dry-runopción.fuente
apt-markhizo el truco para mí, desearía poder upvote 10 veces: P