Es posible que deba mantener una versión precisa de un paquete de Debian, después de un incidente de aplicación o mientras verifica una actualización en una máquina de pruebas. apt-mark hold bloquea los cambios automáticos en este paquete. También bloquea su eliminación.
Úselo para una excepción identificada, con un motivo y una fecha de revisión. Dejar un paquete de seguridad bloqueado durante meses termina creando un punto ciego en las actualizaciones.

Identificar el paquete y la versión instalada
Comience por verificar el nombre exacto del paquete. Una búsqueda en los repositorios no siempre dice lo que realmente está instalado en el servidor.
dpkg-query -W -f='${Package} ${Version}n' nombre-del-paquete
apt-cache policy nombre-del-paquete
El primer comando muestra la versión local. El segundo compara esta versión con los candidatos conocidos por APT. Si el paquete está relacionado con un servicio, también anote el síntoma y la versión que funciona antes de bloquearlo.
Un hold no reemplaza la comprensión de una dependencia. Si bloquea openssl, linux-image o una biblioteca utilizada por varias aplicaciones, observe lo que la próxima actualización quería modificar antes de congelar el paquete.
Bloquear la actualización con apt-mark hold
El comando requiere derechos de administrador. Reemplace nombre-del-paquete por el nombre anotado en el paso anterior.
sudo apt-mark hold nombre-del-paquete
sudo apt-mark showhold
showhold debe mostrar el paquete. APT respetará este marcado durante las operaciones habituales de actualización. Sin embargo, puede controlar lo que haría antes de aceptar una actualización:
sudo apt update
apt list --upgradable
sudo apt-get -s upgrade
La opción -s simula la operación. No descarga ni instala ningún paquete. Verifique que el paquete bloqueado permanezca en su versión esperada y que las dependencias no lleven a APT a una situación incoherente.
No confundir hold y paquete instalado manualmente
apt-mark manual evita sobre todo la auto-eliminación de una dependencia. No bloquea su actualización. En cambio, apt-mark hold modifica la selección de dpkg del paquete para evitar su instalación, actualización o eliminación automática.
Puede verificar esta selección con dpkg:
dpkg --get-selections nombre-del-paquete
dpkg --get-selections | grep ' hold$'
Esta distinción evita una falsa sensación de seguridad. Un paquete marcado como manual puede muy bien pasar a una nueva versión durante apt upgrade.
Levantar el hold después de la prueba
Cuando el parche se valida en una máquina de pruebas, retire el bloqueo y luego controle la lista nuevamente. No inicie una actualización global solo para desbloquear un solo paquete.
sudo apt-mark unhold nombre-del-paquete
sudo apt-mark showhold
sudo apt install nombre-del-paquete
El último comando apunta únicamente al paquete afectado. Revise los paquetes adicionales propuestos por APT antes de confirmar. Para un paquete sensible, reinicie luego el servicio afectado y verifique sus registros. La página del manual apt-mark de Debian también detalla las selecciones hold, install, remove y purge.
Si el hold se había impuesto después de una actualización fallida, mantenga en su ticket o documentación: el paquete, la versión congelada, la razón, la fecha de la prueba y la condición que permite el desbloqueo. Este registro evita que otro administrador retire el hold sin saber por qué existía.
¿Cuándo se debe retirar un paquete de la lista?
Revise los holds en cada ciclo de mantenimiento. Un bloqueo temporal puede volverse peligroso cuando una actualización corrige una vulnerabilidad o una incompatibilidad de dependencias. Verifique los anuncios de Debian o del editor del software, pruebe la nueva versión fuera de producción, y luego use apt-mark unhold tan pronto como se levante el problema inicial.
Para instalar un paquete .deb local y reparar las dependencias adecuadamente, consulte también nuestra guía sobre dpkg y APT. Si automatiza los parches de seguridad, el artículo sobre unattended-upgrades en Debian explica los controles a mantener antes de dejar que la tarea funcione sola.