Snap (Español)

From ArchWiki
Esta traducción de Snap fue revisada el 2019-02-27. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Snap es un sistema de despliegue y manejo de paquetes. Los paquetes son llamados 'snaps' y la herramienta para usarlos es 'snapd', la cual funciona en una amplia gama de distribuciones Linux y permite, por lo tanto, el despliege ascendente de software agnóstico a la distribución. Snap fue originalmente diseñado y desarrollado por Canonical.

snapd es un demonio REST API para la administración de paquetes snaps. Los usuarios pueden interactuar con él al usar el cliente snap, el cual es parte del mismo paquete.

Los snaps pueden ser confinados usando AppArmor el cual ahora es habilitado por el kernel predeterminado. Consulte las páginas wiki relevantes para encontrar instrucciones para habilitar AppArmor en su sistema.

Instalación

Instale el paquete snapdAUR o snapd-gitAUR.

Sugerencia: snapd instala un script en /etc/profile.d/snapd.sh para exportar las rutas de los binarios instalados con el paquete snapd y los accesos directos. Reinicie una vez para que el cambio surta efecto.

Desde la versión 2.36, snapd habilita el soporte AppArmor para Arch Linux. Para usarlo, tiene que habilitar AppArmor en su sistema, vea AppArmor#Instalación.

Nota: Si AppArmor no está habilitado en su sistema todas las snaps se ejecutarán en modo devel lo que significa que tendrán el mismo, acceso sin restricciones a su sistema como las aplicaciones instaladas desde los repositorios Arch Linux.

Si está usando AppArmor:

 $ systemctl enable --now apparmor.service
 $ systemctl enable --now snapd.apparmor.service

Configuración

Para lanzar el demonio snapd cuando snap intente usarlo, inicie y/o habilite snapd.socket

Utilización

La herramienta snap es utilizada para administrar las snaps.

Buscando

Para encontrar snaps para instalar, puede consultar Ubuntu Store con:

$ snap find searchterm

Instalando

Una vez haya encontrado la snap que busca puede instalarla con:

# snap install snapname

Esto requiere privilegios de root. La instalación de snaps por usuario no es posible, aún. Descargará la snap en /var/lib/snapd/snaps y la montará en /var/lib/snapd/snap/snapname para que esté disponible en el sistema.

También creará unidades de montaje por cada snap y las agregará a /etc/systemd/system/multi-user.target.wants/ como enlaces simbólicos para que todas las snaps estén disponibles cuando su sistema es iniciado.

Una vez hecho esto debería encontrarla en la lista de snaps instaladas junto con su número de versión, revisión y desarollador usando:

$ snap list

También puede cargar snaps desde su disco duro local con:

# snap install --dangerous /path/to/snap

Actualización

Para actualizar su snap manualmente use:

# snap refresh

Las snaps se actualizan automáticamente de acuerdo a la configuración snap refresh.timer.

Para ver el siguiente/último tiempo de actualización use:

# snap refresh --time

Para establecer un tiempo de actualización diferente, ej. dos veces al día:

# snap set core refresh.timer=0:00~24:00/2

Vea página de documentación de opciones de sistema para detalles sobre como personalizar el tiempo de actualización.

Eliminando

Los snaps pueden ser eliminados al ejecutar:

# snap remove snapname

Consejos y trucos

Snaps Clásicas

Algunas snaps (e.j. Skype y Pycharm) usan el confinamiento clásico. Sin embargo, el confinamiento clásico requiere el directorio /snap, que no es compatible con FHS. Por lo tanto, el paquete snapd no lleva éste directorio. Sin embargo, si el usuario lo desea, puede crear manualmente un enlace simbólico de /snap a /var/lib/snapd/snap, para permitir la instalación de snaps clásicas:

# ln -s /var/lib/snapd/snap /snap

Confinamiento

Cuando se utiliza AppArmor, snapd (2.36+) generará los mismos perfiles para las snaps como en Ubuntu. El analizador de AppArmor es suficientemente inteligente para eliminar las reglas que aún no son compatibles por la línea principal del kernel.

Para verificar si el confinamiento básico está funcionando, instale la snap hello-world. Luego ejecute lo siguiente:

 $ hello-world.evil
 Hello Evil World!
 This example demonstrates the app confinement
 You should see a permission denied error next
 /snap/hello-world/27/bin/evil: 9: /snap/hello-world/27/bin/evil: cannot create /var/tmp/myevil.txt: Permission denied

La denegación fue causada por AppArmor y debería haber sido registrada.

 # dmesg
 ...
 [  +0.000003] audit: type=1327 audit(1540469583.966:257): proctitle=2F62696E2F7368002F736E61702F68656C6C6F2D776F726C642F32372F62696E2F6576696C
 [ +12.268939] audit: type=1400 audit(1540469596.236:258): apparmor="DENIED" operation="open" profile="snap.hello-world.evil" name="/var/tmp/myevil.txt" pid=10835 comm="evil" requested_mask="wc" denied_mask="wc" fsuid=1000 ouid=1000
 [  +0.000006] audit: type=1300 audit(1540469596.236:258): arch=c000003e syscall=2 success=no exit=-13 a0=55d991ba6bc8 a1=241 a2=1b6 a3=55d991ba6be0 items=0 ppid=31349 pid=10835 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts2 ses=3 comm="evil" exe="/bin/dash" subj==snap.hello-world.evil (enforce)
 ...

Si no ve ningúna denegación, verifique que los perfiles se hayan cargado.

  $ sudo aa-status |grep snap.hello-world
    snap.hello-world.env
    snap.hello-world.evil
    snap.hello-world.hello-world
    snap.hello-world.sh

Además, puede verificar que las características sandbox están disponibles en el sistema de acuerdo a snapd:

 $ snap debug sandbox-features
 apparmor:             kernel:caps kernel:domain kernel:file kernel:mount kernel:namespaces kernel:network_v8 kernel:policy kernel:ptrace kernel:query kernel:rlimit kernel:signal parser:unsafe policy:default support-level:partial
 confinement-options:  devmode
 dbus:                 mediated-bus-access
 kmod:                 mediated-modprobe
 mount:                freezer-cgroup-v1 layouts mount-namespace per-snap-persistency per-snap-profiles per-snap-updates per-snap-user-profiles stale-base-invalidation
 seccomp:              bpf-argument-filtering kernel:allow kernel:errno kernel:kill_process kernel:kill_thread kernel:log kernel:trace kernel:trap

Administración Gráfica

Tanto Gnome Software Center como KDE Discover pueden proporcionar soporte nativo de snap con los paquetes gnome-software-snapAUR[enlace roto: package not found] o discover-snapAUR.

Soporte

Arch Linux related mailing lists and other official Arch Linux support channels are not an appropriate place to request help with snaps on Arch Linux. An appropriate place to ask for support is the Snapcraft forum.

Las listas de correo relacionadas con Arch Linux y otros canales oficiales de soporte de Arch Linux no son lugar apropiado para solicitar ayuda sobre snaps en Arch Linux. Un lugar apropiado para solicitar ayuda de soporte es el foro Snapcraft.

Véase también