Mi primer problema fue cuando intenté apt-get update
o apt-get upgrade
. En la actualización me sale el siguiente error:
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not installed
E: Unmet dependencies. Try using -f.
Intenté ejecutar apt-get install -f y este fue el resultado (después de decir que sí en el indicador)
(Reading database ... 186183 files and directories currently installed.)
Unpacking linux-image-3.2.0-27-generic (from .../linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb) ...
Done.
dpkg: error processing /var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb (--unpack):
failed in write on buffer copy for backend dpkg-deb during `./boot/System.map-3.2.0-27-generic': No space left on device
No apport report written because the error message indicates a disk full error
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.2.0-27-generic /boot/vmlinuz-3.2.0-27-generic
Errors were encountered while processing:
/var/cache/apt/archives/linux-image-3.2.0-27-generic_3.2.0-27.43_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Intenté ejecutar apt-get autoremove
y me da el mismo error que apt-get upgrade
.
Cuando corro df
, obtengo esto para /boot
:
/dev/sda1 233191 230297 0 100% /boot
Entonces, leí en otra parte que debería tratar de purgar los núcleos viejos. Verifiqué qué núcleos tenía con:
$ dpkg -l linux-image-\* | grep ^ii
ii linux-image-2.6.38-13-server 2.6.38-13.52 Linux kernel image for version 2.6.38 on x86_64
ii linux-image-3.0.0-13-server 3.0.0-13.22 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-14-server 3.0.0-14.23 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-15-server 3.0.0-15.26 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-16-server 3.0.0-16.29 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.0.0-17-server 3.0.0-17.30 Linux kernel image for version 3.0.0 on x86_64
ii linux-image-3.2.0-24-generic 3.2.0-24.39 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii linux-image-3.2.0-25-generic 3.2.0-25.40 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
ii linux-image-3.2.0-26-generic 3.2.0-26.41 Linux kernel image for version 3.2.0 on 64 bit x86 SMP
Cuando trato de eliminar el más antiguo con esto:
$ sudo apt-get purge linux-image-2.6.38-13-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
linux-image-server : Depends: linux-image-3.2.0-27-generic but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
¿Cómo puedo liberar o extender el arranque sin estropear mi instalación?
upgrade
apt
partitioning
Strifey16
fuente
fuente
Remove-Unused-Dependencies
no es el predeterminado?Respuestas:
Liberando espacio en el sistema de archivos raíz
Para liberar espacio en el sistema de archivos raíz, puede intentar ejecutar
apt-get clean
.Si eso no funciona, puede ir
/var/cache/apt/archives
y eliminar manualmente algunos archivos del caché para recuperar algo de espacio, por ejemplo:.deb
Si es necesario , no hará daño eliminar todos los archivos aquí, eso es lo queapt-get clean
hace. Se volverán a descargar automáticamenteapt
si se vuelven a necesitar.Liberando espacio en el sistema de archivos / boot
El póster original tiene una
/boot
partición separada , y eso es lo que está lleno y evita que elapt
sistema funcione. Será necesario que libere espacio allí.Si hay casi suficiente espacio, vaya
/boot
y elimine uno o dos archivos de configuración:por ejemplo, pero usando el nombre de una de las versiones del núcleo que tiene intención de eliminar de todos modos. Esto liberará un poco de espacio (aproximadamente 144K cada uno).
Si necesita más espacio eliminar de forma individual viejos
vmlinuz
,initrd
,abi
ySystem.map
los archivos hasta que haya suficiente espacio (alrededor de 22M para una de mis versiones del kernel i386).Hagas lo que hagas, no los elimines a todos . Al menos debe mantener las dos últimas versiones coincidentes de cada tipo de archivo, para cada tipo de núcleo que utilice.
Luego proceda con sus comandos de instalación de apt-get. Como se mencionó anteriormente, es posible que tengan que volver a descargar algunas de las debs que eliminó, pero si es así, eso sucederá automáticamente. Cuando haya vuelto a trabajar, limpie utilizando apt-get para eliminar los paquetes correspondientes a los archivos que eliminó, para que todo coincida.
El archivo de configuración en
/boot
es la configuración del núcleo que utilizó el equipo del núcleo para construir el núcleo del mismo nombre. Debería ser inofensivo eliminarlo a menos que lo desee como referencia o para ayudarlo a construir sus propios núcleos.Finalmente, está eliminando manualmente uno o dos paquetes de kernel antiguos de la
/boot
partición para dejar aún más espacio para el nuevo.fuente
sudo rm
para eliminar / arrancar. En su lugar, usesudo dpkg --purge
para eliminar algunos paquetes viejos de linux-image. A partir de entonces, usesudo apt-get -f install
para arreglar la dependencia rota.rm
se puede usar entonces.En mi caso, los
apt
comandos y eldpkg
comando no pudieron finalizar y no pudieron eliminarse. La actualización automática había fallado en la instalación2.6.32-56-server
.Mi primer paso fue identificar el espacio que se utilizará,
Tenía unos 30 núcleos y archivos de soporte.
Hice una
uname -a
para obtener el kernel en ejecución, identifiqué que estaba en Linux alternativo2.6.32-43-server
e hice unatar
de 6 de las versiones que no se estaban ejecutando y que eran viejas.Luego hice algo
rm -rf
de lo que había respaldado:Estoy mostrando estos comandos como ejemplos, tendrá que decidir con qué trabajará para su situación.
Ahora que tenía algo de espacio
/boot
, pude correrPara limpiar la instalación fallida de
2.6.32-56-server
.Entonces hice un
Esto me dio espacio para devolver lo que había respaldado.
Para limpiar, entonces podría ejecutar:
Reinicié y ahora estoy usando 4% de
/boot
.fuente
Puede usar en
dpkg
lugar deapt-get
eliminar los núcleos más antiguos:fuente
/boot
partición separada ).Noté que todavía había algunos archivos de las versiones anteriores en el directorio de arranque:
Y el administrador de paquetes enumeraría las versiones anteriores:
Por lo tanto, usé este comando (
autoremove
también eliminaría imágenes más recientes que no quiero eliminar)Todavía me quedaban algunos encabezados:
Entonces hice esto:
Finalmente quedaba un paquete que no pude eliminar con apt-get purge:
Fuente: eliminar un paquete marcado como rc por dpkg
fuente
Compruebe el uso de
/var/tmp
condu -sh /var/tmp/
. Todos los archivos en esa carpeta se pueden eliminar para hacer espacio.Luego puede ejecutar lo siguiente para eliminar los núcleos antiguos:
fuente
/var/tmp
tiene que ver con los granos viejos? Y no siempre es seguro eliminar todo en/var/tmp
...Esto es lo que usé:
Haga eso para todos los núcleos antiguos y solo mantenga los dos más recientes.
Si desea eliminar automáticamente los núcleos antiguos y actualizar GRUB, vea esto: Documentación de Ubuntu
fuente
Descubrí que lo único que funcionaba para mí era usar Aptitude.
Luego, cuando se abre, generalmente dirá algo sobre dependencias insatisfechas en la parte inferior. Puede presionar la letra
g
para continuar con la eliminación sugerida. Te llevará a una página donde enumera lo que va a suceder.Debe haber un signo menos al
-
lado de los núcleos rotos. Presioneg
nuevamente y eliminará los granos rotos. Presioneq
para salir. Entonces debería poder usarsudo apt-get autoremove
para deshacerse de los núcleos antiguos y liberar espacio.fuente
No puede actuar sobre paquetes, pero puede actuar sobre otros archivos. Primero, revise su carpeta de inicio y vea si hay algo que pueda eliminar. De lo contrario, intente mover una buena cantidad de archivos a otra partición (o una unidad flash) y luego intente
sudo apt-get install -f
solucionar los problemas de dependencia del paquete (lo más probable es que haya instalado un archivo .debdpkg
) y luego purgue los núcleos antiguos. Una vez que tenga al menos 10 MB de forma segura, intente depurar software o archivos innecesarios.fuente
Utilice Synaptic Package Manager. Simplemente elija el paquete que desea eliminar y le pedirá que también elimine los paquetes que dependen de él. En mi experiencia, los paquetes de kernel siempre vienen en grupos de dos (o más, dependiendo de cómo cuente) que son interdependientes. Por lo general, puede encontrar los antiguos rápidamente utilizando el filtro "local / obsoleto".
fuente
He estado luchando con este problema de vez en cuando, y todavía no he visto ninguna solución que realmente haga el trabajo completo. En algunos casos, eliminar los núcleos antiguos termina en dependencias que me impiden eliminar cualquier cosa y tuve que eliminar los núcleos manualmente de / boot. Sin embargo, todavía quería hacer todo el trabajo, ya que imagino que los núcleos eliminados manualmente se registran en algún lugar y pueden causar problemas en el futuro, cuando algo informa que faltan archivos por estar sentado haciendo rm -rf en los archivos.
Así que escribí este script, basado en muchas sugerencias de Google aquí que no requieren ninguna instalación adicional de algo. El script se ha modificado varias veces para admitir algunas de mis propias situaciones "inesperadas". Por ejemplo, al ejecutar esto en una frambuesa pi, update-grub probablemente no existe. Y en algunos casos, cuando se ejecutaban los últimos actualizadores, los servidores estaban atascados con IPv6 donde algunos sitios eran inaccesibles.
El script determina si tiene que eliminar forzosamente los núcleos que están completamente atascados debido a las compilaciones de dependencia, o si puede hacerlo de la manera "correcta".
fuente
Simplemente correr
sudo apt-get -f autoremove
resolvió mi problema.fuente
/dev/sda1
se monta en/
Ejecuta esto:
Fuente: me sale este error después de la actualización. por favor ayuda
fuente
apt
no se eliminarán los paquetes del kernel porque el proceso de eliminación en sí genera archivos/boot
, que ya están llenos. Por esoapt-get autoremove
falla. La pregunta que está buscando es askubuntu.com/q/142926/158442 , que ya tieneautoremove
, en la lista.He visto un par de artículos sobre / boot llenos que no se resuelven dpkg purgando viejos núcleos de Linux, porque apt-get -f install o apt-get -f autoremov e reinstalan los núcleos.
En mi caso, al menos, los paquetes firmados y adicionales también debían eliminarse: los núcleos eran dependencias de estos paquetes, por lo que era conveniente reinstalarlos. En general, los paquetes de kernel relacionados deben purgarse antes de llamar a 'instalar'. Si intentó actualizar apt-get justo después de la purga, el mensaje de error debería haber dicho qué paquetes tenían una dependencia insatisfecha del núcleo que acababa de purgar.
En mi caso, la siguiente táctica funcionó:
fuente
Instale la herramienta de purga de Linux como esta .
Luego corre en la terminal:
Luego continúe eliminando granos por ej.
Extra:
Si desea usar Linux Purge para la eliminación desatendida del núcleo en lugar de usar actualizaciones desatendidas para eso, debe deshabilitar la eliminación de cosas no utilizadas editando /etc/apt/apt.conf.d/50unattended-upgrades y configurando un servicio systemd ejecutando
cuando quieras.
fuente