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 autoremove
detecta y las elimina automáticamente, y hay alguna manera de que pueda hacerlo ? 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?
53
Respuestas:
En cuanto a por qué, consulte el archivo
/etc/apt/apt.conf.d/01autoremove-kernels
Como 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-removal
hay esta parte:Entonces, si compara la salida del
01autoremove-kernels
archivo yuname -r
se 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-kernels
tiene 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-kernels
mantener esas versiones intermedias, ¿verdad?01autoremove
es el archivo que desea,01autoremove-kernels
probablemente 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-generic
se 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-extra
sino paquetes que coinciden con expresiones regulares en laNeverAutoRemove
sección.apt-get autoremove
cual no elimina los núcleos que no figuran en la lista/etc/apt/apt.conf.d/01autoremove-kernels
es 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 --purge
no 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 --purge
posteriormente 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 autoremove
con la--dry-run
opción.fuente
apt-mark
hizo el truco para mí, desearía poder upvote 10 veces: P