Gestión de paquetes Snap en Ubuntu Server

¿Qué es Snap?

Snap es un sistema de paquetes universal desarrollado por Canonical. Los snaps son paquetes autocontenidos que incluyen la aplicación y todas sus dependencias, se ejecutan en un entorno aislado (sandbox) y se actualizan automáticamente. El demonio que los gestiona es snapd.

En Ubuntu Server, snapd viene instalado por defecto desde Ubuntu 16.04. Los snaps se obtienen de la Snap Store (store.snapcraft.io).

Instalar y comprobar snapd


# apt install snapd                        # instalar snapd si no está presente
$ systemctl status snapd                   # comprobar que el servicio está activo
$ snap version                             # ver versión de snap y snapd
          

Canales de distribución

Cada snap se distribuye a través de canales que combinan una pista (track) y un nivel de riesgo:

  • stable → versión de producción recomendada (por defecto)
  • candidate → candidata a stable, en pruebas finales
  • beta → funcionalidades nuevas en pruebas
  • edge → último commit, sin pruebas

El canal completo tiene la forma track/riesgo, por ejemplo: 22/stable.

Tipos de confinamiento

  • strict → confinamiento total mediante AppArmor/seccomp; acceso limitado al sistema
  • classic → acceso completo al sistema, similar a un paquete deb tradicional
  • devmode → modo desarrollador, sin restricciones, solo para pruebas

Comandos principales

Buscar e instalar:


$ snap find nginx                          # buscar snaps por nombre
$ snap info lxd                            # información detallada, canales disponibles
# snap install lxd                         # instalar desde el canal stable
# snap install lxd --channel=5.21/stable   # instalar desde un canal concreto
# snap install node --classic              # instalar con confinamiento classic
          

Listar y actualizar:


$ snap list                                # listar snaps instalados
$ snap list --all                          # listar todas las revisiones instaladas
# snap refresh                             # actualizar todos los snaps
# snap refresh lxd                         # actualizar un snap concreto
# snap refresh lxd --channel=5.21/stable   # cambiar de canal al actualizar
          

Eliminar y revertir:


# snap remove lxd                          # eliminar el snap
# snap remove lxd --revision=28301        # eliminar una revisión concreta
# snap revert lxd                          # volver a la revisión anterior
          

Servicios de snap:


$ snap services                            # listar servicios de todos los snaps
$ snap services lxd                        # servicios del snap lxd
# snap start lxd
# snap stop lxd
# snap restart lxd
# snap enable lxd                          # habilitar al arranque
# snap disable lxd                         # deshabilitar al arranque
          

Conexiones y permisos:


$ snap connections lxd                     # ver interfaces conectadas
# snap connect lxd:network
# snap disconnect lxd:network
          

Actualizaciones automáticas

Snapd actualiza los snaps automáticamente hasta 4 veces al día. Para ver y controlar la ventana de actualización:


$ snap get system refresh.timer            # ver programación actual
# snap set system refresh.timer=02:00-04:00  # actualizar solo entre 2 y 4 AM
# snap set system refresh.hold=48h         # posponer 48 horas las actualizaciones
          

Snap es especialmente útil para instalar herramientas de desarrollo recientes (Node.js, Go, kubectl…) en versiones más nuevas que las disponibles en los repositorios oficiales de Ubuntu.

Bibliotecas compartidas: ldd, ldconfig, LD_LIBRARY_PATH

Índice de la sección

Índice del curso