Curso de Ubuntu 26.04 / Eliminar paquetes, gestionar retenciones y resolver dependencias
Para resolver problemas de paquetes de Ubuntu, distinga la eliminación, las retenciones manuales, los bloqueos de la base de datos y los errores de dependencias. Consulte primero el estado y revise el plan mediante una simulación; aplique después solo la operación necesaria.
Distinguir el alcance del comando de eliminación
| Tarea | Impacto |
|---|---|
| remove | Eliminar el programa; algunos ajustes del sistema pueden permanecer |
| purge | Eliminar también la configuración administrada del paquete; no significa borrar todos los datos del home |
| autoremove | Elimina dependencias marcadas como automáticas que APT considera innecesarias |
| hold | Suspender cambios automáticos de un paquete específico; también puede bloquear actualizaciones de seguridad |
Los ejercicios se realizan con hello, usado aquí como paquete de laboratorio. Se registra si ya estaba instalado y, si no se ha instalado, se utiliza el procedimiento de instalación APT previo. No se practican eliminaciones de paquetes de kernel, red o inicio de sesión.
Simulación de eliminación y lectura de listas antes de eliminar
apt-get -s remove hello
apt-get -s purge hello
apt-get -s autoremove
Compare las eliminaciones propuestas en cada simulación. Si aparecen controladores o servicios inesperados, investigue antes de continuar. En el laboratorio, ejecute únicamente la operación que haya decidido, por ejemplo sudo apt remove hello; no omita la revisión mediante -y y no elimine una instalación previa que necesite conservar.
Comprobar una retención y restaurar el estado anterior
(
set -eu
if [ "$(dpkg-query -W -f='${Status}' hello 2>/dev/null)" != "install ok installed" ]; then
printf 'Install the nonessential hello lab package first.\n' >&2
exit 1
fi
was_held=$(apt-mark showhold | grep -x hello || true)
sudo apt-mark hold hello
apt-mark showhold
if [ "$was_held" != hello ]; then
sudo apt-mark unhold hello
fi
apt-mark showhold
)
El bloque comprueba que hello está instalado y registra si ya estaba retenido. Solo retira la retención que añade en esta prueba; una retención previa se mantiene. Si el bloque falla o se interrumpe entre hold y unhold, consulte apt-mark showhold y restituya el estado registrado. Quitar una retención no instala la actualización. Mantenga las retenciones de otros paquetes y documente el motivo, la revisión prevista y el impacto de seguridad de las que prolongue.
Comprobar los errores de bloqueo comenzando por la tarea en ejecución
systemctl status apt-daily.service apt-daily-upgrade.service --no-pager
ps -eo pid,etime,args | grep -E "[a]pt|[d]pkg|[u]nattended"
Si otras actualizaciones están avanzando normalmente, espere. Borrar archivos de bloqueo o finalizar arbitrariamente los procesos de paquetes puede corromper las operaciones de la base de datos. No concluya que un bloqueo está huérfano solo porque la salida indique que el servicio está inactivo; verifique también los procesos y registros relacionados.
Configuración incompleta y recuperación de dependencias
sudo dpkg --audit
apt-get -s --fix-broken install
Si quedaron configuraciones de paquetes de una instalación interrumpida, después de revisar los registros de operaciones y las copias de seguridad, se puede usar sudo dpkg --configure -a. Este comando ejecuta el script de instalación y el servicio puede cambiar. Lea si la simulación de dependencias rotas solo sugiere la instalación o eliminación necesaria y decida si aplicar sudo apt-get --fix-broken install.
Si el error proviene de finalización del soporte del repositorio o mezcla de versiones incorrectas, corrija la fuente en lugar de repetir el comando de dependencias. Al finalizar, verifique sudo dpkg --audit, sudo apt-get check y el funcionamiento real del servicio correspondiente. El éxito en la verificación de paquetes y el éxito en la recuperación de datos de la aplicación son resultados diferentes.




