Los Snaps de Canonical son definitivamente el verdadero negocio. El sistema de administración de paquetes de Linux seguro y portátil es más que una herramienta geek para mostrar sus credenciales tecnológicas. Solo considere la creciente lista de empresas que ya han comprado y están proporcionando su software de escritorio a través de instantáneas, incluidas Blender, Slack, Spotify, Android Studio y Visual Studio Code de Microsoft (¡Microsoft!). Y no olvide que el verdadero crecimiento del sistema snap está en el mundo de los dispositivos y servidores IoT en lugar de los escritorios.
Pero a medida que crece la popularidad de las instantáneas (algunas nuevas distribuciones de Linux vienen con el servicio snapd instalado de forma predeterminada), es posible que se te perdone que te preguntes cómo se supone que debes hacer que funcionen. No me malinterpreten: hay todo tipo de guías basadas en la web para encontrar, instalar y eliminar instantáneas. Y hay lugares a los que los desarrolladores pueden acudir para obtener ayuda para crear sus aplicaciones instantáneas. Pero en este momento estoy hablando de configurar su comportamiento o solucionar problemas cuando las cosas van mal.
Solo para que conste, busca nuevas instantáneas para instalar usando algo como:
$ snap find aws
Cuando encuentra un paquete que le gusta, lo instala usando:
$ snap install aws-cli
Ah, y los eliminas con eliminar.
$ snap remove aws-cli
Ahí. No puedes decir que nunca te enseñé nada. Pero de eso no trata este artículo. De lo que vamos a hablar es de cosas de administración reales, como cambiar configuraciones o solucionar problemas que fallaron.
Bueno, ¿cómo va a ser diferente de la forma en que lo harías normalmente en Linux? Los archivos de configuración generalmente estarán en /etc/ , los procesos revelarán sus secretos más profundos a través de systemctl y los registros llegarán a /var/log/ .
No tan rápido allí, peregrino. No siempre es así como funcionan las cosas en Snapland. Verá, un complemento no es más que un solo archivo comprimido (nombrado con la extensión .snap ) que contiene todo el sistema de archivos necesario para ejecutar un paquete. Estos archivos nunca se descomprimen ni se "instalan", sino que se montan dinámicamente en tiempo de ejecución y se exponen al usuario como un entorno virtual.
Esto significa que los recursos utilizados por un programa podrían no existir realmente en el sistema host. Así, por ejemplo, el complemento Nextcloud crea sus propias versiones de Apache y MySQL para su backend. Entonces, si, por ejemplo, desea configurar un nuevo host virtual en /etc/apache2/sites-available/ o crear un nuevo usuario de MySQL de la manera tradicional, no tendrá suerte.
Las ventajas de este enfoque son significativas: la instalación y la configuración generalmente serán mucho más sencillas y es mucho menos probable que se encuentre con problemas y conflictos de dependencia. Pero al menos también parece significar que tiene menos acceso a los órganos vitales que alimentan su software.
Entonces, ¿dónde sucede todo lo ágil? Eche un vistazo a su sistema de archivos host usted mismo: probablemente encontrará más directorios instantáneos de los que puede sacudir un palo (si así lo desea). Estos son los directorios que probablemente creó el proceso de instalación rápida:
/snap/ /var/snap/ /var/lib/snapd/ /home/username/snap/
¿Tantos? ¿Para qué? Repasemos esos uno a la vez. Siéntase libre de hurgar en su propia máquina Linux para ver todo esto por sí mismo.
Los archivos .snap reales se guardan en el directorio /var/lib/snapd/ . Al ejecutarse, esos archivos se montarán en el directorio raíz /snap/ . Mirando allí, en el subdirectorio /snap/core/ , verá lo que parece un sistema de archivos Linux normal. En realidad, es el sistema de archivos virtual el que utilizan las instantáneas activas.
$ ls /snap/core/current bin dev home lib64 meta opt root sbin srv tmp var boot etc lib media mnt proc run snap sys usr writable
Y aquí hay un subdirectorio que contiene archivos de configuración (de solo lectura) utilizados por el complemento Nextcloud. Eso solo estará allí, por supuesto, si ha instalado Nextcloud ( instalación instantánea de nextcloud ).
$ ls /snap/nextcloud/current/conf/ httpd.conf mime.types ssl.conf
Está bien. Ahora, ¿qué pasa con /var/snap/ ? Al igual que los habitantes tradicionales de /var/ , los archivos dentro de /var/snap/ contienen varias formas de datos de usuario y archivos de registro, el tipo de datos que las aplicaciones generan y consumen durante las operaciones. Este ejemplo muestra directorios de datos utilizados por algunas instantáneas relacionadas con el escritorio, incluida la CLI de AWS y la herramienta de comunicación del equipo de Slack. (Está bien, técnicamente hablando, la CLI de AWS no es una herramienta de escritorio).
$ ls /var/snap aws-cli core18 gnome-system-monitor gnome-calculator brave gnome-3-26-1604 gnome-characters gtk-common-themes core gnome-3-28-1804 gnome-logs slack
Sumérjase en los subdirectorios dentro de _/var/snap/_en su máquina y vea lo que puede descubrir.
Eso deja solo el directorio ~/snap que existe en el directorio de inicio de un usuario en al menos algunos sistemas de archivos de Linux. Contendrá directorios usando algunos de los nombres que verá en /var/snap. ¿Qué está pasando allí?
$ ls ~/snap aws-cli brave gnome-calculator slack
Por lo que puedo decir, estos directorios están destinados a almacenar datos versionados relacionados con la configuración utilizada por su cuenta de usuario.
Hasta ahora, le he mostrado cómo encontrar varias clases de datos guardados en archivos de configuración (dentro de /var/snap/ ), sistemas de archivos virtuales ( /snap/ ) y colecciones de configuraciones de usuario ( ~/snap ). También le mostré dónde no mirar: /var/lib/snapd/ , que es donde viven los archivos .snap; nada que ver aquí, muévete ahora.
Ahora, ¿qué pasa con la administración real? Esto es un poco más complicado. Algunas instantáneas, como Nextcloud, exponen una interfaz de administración con todas las funciones. Hablo de eso en mi artículo Administrando Nextcloud como Snap. Pero parece que la simplicidad de las instantáneas a veces significa que simplemente no hay mucha configuración práctica posible.
Sin embargo, ese no es siempre el caso. Pero primero, deberá conocer los servicios de complemento . Algunas aplicaciones más complejas requieren pilas de software de varias capas. Nextcloud, por ejemplo, crea y administra sus propias versiones de Apache, MySQL, PHP y Redis. Cada una de esas "capas" se llama, en términos rápidos, un servicio.
Si algún complemento instalado en su máquina tiene sus propios servicios, podrá enumerarlos junto con su estado usando este comando snapd:
$ snap services Service Startup Current Notes nextcloud.apache enabled active - nextcloud.mdns-publisher enabled active - nextcloud.mysql enabled active - nextcloud.nextcloud-cron enabled active - nextcloud.nextcloud-fixer enabled inactive - nextcloud.php-fpm enabled active - nextcloud.redis-server enabled active - nextcloud.renew-certs enabled active -
También puede controlar el estado de ejecución e inicio de un servicio. Este ejemplo detendrá el servicio Apache de Nextcloud y se asegurará de que no se inicie cuando el sistema se reinicie (aunque recuerde que esto deshabilitará Nextcloud; probablemente no quiera hacer eso):
$ snap stop --disable nextcloud.apache
También puede usar systemctl para administrar los procesos de servicio instantáneo:
$ systemctl status snap.nextcloud.apache
Si su complemento incluye al menos un servicio, puede ver sus registros usando snapd:
$ snap logs nextcloud
También puede especificar un servicio en particular:
$ snap logs nextcloud.mysql
Para algunas instantáneas (como Nextcloud), snapd hace que las configuraciones útiles estén disponibles desde la línea de comandos. Puede mostrar las configuraciones disponibles usando snap get :
$ snap get nextcloud Key Value mode production nextcloud {...} php {...} ports {...} private {...}
Descienda un nivel agregando el nombre de una configuración específica. Este ejemplo nos muestra que Nextcloud está escuchando actualmente solo en los puertos 80 (HTTP) y 443 (HTTPS).
$ snap get nextcloud ports Key Value ports.http 80 ports.https 443
Puede cambiar una configuración usando el comando set . Este le diría a Nextcloud que escuche en el puerto 8080 las solicitudes HTTP inseguras en lugar del 80.
$ snap set nextcloud ports.http=8080
Snapd también ofrece algunos ajustes de configuración para todo el sistema que se describen aquí .
Todo eso lo ayudará a comenzar cuando las cosas necesiten arreglos. Así que hazlo.
¿Buscando por mas? Puede disfrutar de mis libros y cursos de Pluralsight sobre temas relacionados con Linux, AWS y Docker.