Curso de Ubuntu 26.04 / Instalar Snap y gestionar permisos y actualizaciones
Los Snap de Ubuntu Server se gestionan mediante la línea de comandos, verificando la versión instalada, el proveedor, el canal, los permisos de conexión y el estado de actualización. Como se instalan por separado de los paquetes Deb de APT, incluso si se usa el mismo nombre de programa, se deben distinguir la ruta de ejecución, el formato de instalación y la ubicación de los datos.
Verificar primero el formato de la aplicación y el proveedor
Con snap info nombre_de_aplicación se leen el proveedor, la descripción y el canal, y con snap list se comparan los nombres instalados, la versión y el canal de seguimiento. La ruta de ejecución se verifica con el comando command -v. Tener el mismo nombre no significa que el mantenedor, la ruta de actualización y la ubicación de configuración sean iguales.
snap list
snap changes
snap refresh --time
Se registran el nombre real, la versión y el canal de seguimiento de snap list. snap changes muestra el historial de operaciones como la instalación y la actualización. Que no haya actualizaciones en apt no significa que todas las aplicaciones Snap estén al día.
Probar con aplicaciones pequeñas para confirmar la instalación y ejecución
snap info hello-world
sudo snap install hello-world
hello-world
Compruebe antes si hello-world ya estaba instalado. Si lo estaba, conserve su instalación y canal. Revise el proveedor antes de instalar y observe la respuesta al ejecutar la aplicación. Si no aparece en PATH, compruebe /snap/bin y abra una sesión nueva si corresponde.
Comprender canales y niveles de aislamiento
Un canal puede combinar una línea de versiones (track), un nivel de riesgo y una rama temporal. Los niveles stable, candidate, beta y edge expresan distintos grados de preparación; no garantizan que una aplicación concreta esté libre de fallos. Empiece por el canal estable recomendado por su proveedor y registre el canal actual y una copia de sus datos antes de cambiarlo.
Los niveles de aislamiento de Snap delimitan el acceso al sistema. strict restringe recursos y habilita accesos específicos mediante interfaces; classic permite un acceso más amplio, semejante al de un paquete tradicional. devmode es un modo de desarrollo que permite accesos y registra problemas de interfaces. No añada --classic ni --devmode para resolver un fallo sin comprender qué acceso solicita la aplicación.
Verificar permisos de conexión y causas de fallos
Seleccione el nombre instalado en snap list y examine sus interfaces con snap connections NOMBRE_SNAP. Ante un problema con medios externos, revise tanto la interfaz como el montaje real y los permisos de archivos. Autorice solo el acceso necesario.
Después de verificar las interfaces necesarias en snap info NOMBRE_SNAP, snap connections NOMBRE_SNAP y en la documentación del proveedor, se conectan solo las mínimas y se prueba el nuevo acceso. Después de resolver problemas, se registra el estado original para poder desconectar solo las conexiones agregadas esta vez. Solo la conexión de interfaces no cambia los permisos de archivos del host.
Verificar las interfaces declaradas y restaurar solo las nuevas conexiones
Verifique en la documentación del proveedor qué interfaces son realmente necesarias en un Snap de servidor ya instalado. Compare la columna Plug·Slot de snap connections NOMBRE_SNAP con la salida de snap interface nombre_de_interfaz. El siguiente script recibe solo SNAP:PLUG y SLOT exactos de esa salida. Si no hay un plug declarado, no se adivinan permisos nuevos para conectarlos solo para práctica.
Guarde todo en ~/test-snap-interface.sh y ejecútelo con bash ~/test-snap-interface.sh SNAP_REAL:PLUG_REAL SLOT_REAL. No modifique las conexiones existentes y pruebe las nuevas conexiones documentadas en una terminal separada, luego presione Enter para desconectarlas. Las interfaces que permiten acceso a sistemas sensibles no se conectan en servidores en producción solo para prácticas.
set -eu
if [ "$#" -ne 2 ]; then
printf 'Usage: bash test-snap-interface.sh SNAP:PLUG SLOT\n' >&2; exit 2
fi
plug=$1
slot=$2
app=${plug%%:*}
case "$plug" in *:*) ;; *) printf 'Use the exact Plug from snap connections.\n' >&2; exit 2 ;; esac
case "$slot" in *:*) ;; *) printf 'Use the exact Slot from snap connections.\n' >&2; exit 2 ;; esac
snap list "$app"
connections=$(LC_ALL=C snap connections "$app")
printf '%s\n' "$connections"
previous_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
case "$previous_slot" in
-) ;;
'') printf 'Declared plug not found; stop.\n' >&2; exit 1 ;;
*) printf 'Already connected to %s; preserve it.\n' "$previous_slot"; exit 0 ;;
esac
restore() {
original_status=$?
trap - EXIT HUP INT TERM
if ! connections=$(LC_ALL=C snap connections "$app"); then
printf 'Cannot inspect the connection; verify restoration manually.\n' >&2; exit 1
fi
current_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
case "$current_slot" in
"$previous_slot") ;;
"$slot")
if ! sudo snap disconnect "$plug" "$slot"; then
printf 'Restoration failed; inspect the connection.\n' >&2; exit 1
fi
;;
*) printf 'Unexpected connection state; inspect before disconnecting.\n' >&2; exit 1 ;;
esac
if ! connections=$(LC_ALL=C snap connections "$app"); then
printf 'Cannot verify restoration; inspect the connection.\n' >&2; exit 1
fi
printf '%s\n' "$connections"
restored_slot=$(printf '%s\n' "$connections" | awk -v p="$plug" '$2 == p {print $3}')
if [ "$restored_slot" != "$previous_slot" ]; then
printf 'Original connection state was not restored.\n' >&2; exit 1
fi
exit "$original_status"
}
trap restore EXIT
trap 'exit 129' HUP
trap 'exit 130' INT
trap 'exit 143' TERM
sudo snap connect "$plug" "$slot"
snap connections "$app"
read -r -p 'Run your documented app test in another terminal; press Enter to restore: ' answer
Confirme que la columna Slot cambia de - a la conexión solicitada y vuelve a - al terminar. El script desconecta únicamente ese destino y comprueba el estado restaurado. Si falla la desconexión o su verificación, devuelve un estado distinto de cero; también conserva el fallo de la práctica. Intenta restaurar ante Ctrl+C y señales de terminación, pero no puede garantizarlo ante un apagado o una terminación forzada. Registre el Plug, el Slot y el comando de restauración para revisarlos manualmente si hace falta.
Puede consultar los comandos de conexión y liberación en la guía oficial de uso de Snap.
Comprobar los datos después de actualizar, restaurar o eliminar
Puede solicitar sudo snap refresh NOMBRE_SNAP tras revisar el impacto en las aplicaciones y servicios activos. Según la documentación de actualizaciones y reversión de Snap, volver a una revisión puede restaurar datos asociados a ella, pero los datos compartidos entre revisiones pueden conservarse. No presuponga compatibilidad inversa del formato ni sustituya una copia de seguridad por snap revert.
Para limpiar solo la aplicación de práctica recién instalada, utilice sudo snap remove hello-world. Las instantáneas automáticas de datos que pueden generarse durante la eliminación normal se verifican con snap saved y se sigue una política de conservación separada. La eliminación de aplicaciones, la conservación de instantáneas y la eliminación de todos los archivos del directorio de inicio no son la misma operación.




