Sviluppato da Canonical, la società dietro Ubuntu, e originariamente pensato per essere utilizzato su quest'ultimo, Snappy Package Manager è un software gratuito e open source utilizzato per installare e gestire i pacchetti snap. Lo scopo dei pacchetti Snap, proprio come i flatpak, è quello di distribuire applicazioni sandbox e autonome (le applicazioni sono impacchettate insieme alle loro dipendenze).
Il gestore di pacchetti Snappy e la sua infrastruttura sono approdati su distribuzioni diverse da Ubuntu. In questo tutorial vediamo come installarlo e usarlo sull'ultima versione di Fedora.
In questo tutorial imparerai:
- Come installare il gestore di pacchetti snap
- Come cercare i pacchetti nello snap store
- Come installare e aggiornare i pacchetti snap
- Come elencare i pacchetti snap installati
- Come creare e gestire gli snapshot di un pacchetto
- Come rimuovere i pacchetti snap
Requisiti software e convenzioni utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | Indipendente dalla distribuzione |
Software | scatta |
Altro | Privilegi di root per gestire il software |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede l'esecuzione di determinati comandi linux come un normale utente non privilegiato |
Installazione
Per utilizzare il gestore di pacchetti Snappy su Fedora, la prima cosa che dobbiamo fare è installare il pacchetto contenente il software. Fortunatamente per noi, è una cosa molto facile da fare, dal momento che è disponibile nei repository ufficiali di Fedora. Possiamo eseguire l'installazione graficamente o utilizzando il dnf
gestore di pacchetti dal nostro amato emulatore di terminale. Ecco il comando che vogliamo eseguire:
$ sudo dnf install snapd
Lo snap-confine
e snapd-selinux
vengono installati come dipendenze di snapd:il primo contiene il software utilizzato per applicare il confinamento alle applicazioni snap, mentre il secondo fornisce la politica che consente a snapd di funzionare correttamente sotto SELinux. Come parte dell'installazione, snapd.socket
è abilitato utilizzando systemd.
Ricerca di pacchetti
Il modo in cui interagiamo con i pacchetti snap è usando lo snap
applicazione. Una delle azioni più basilari che dobbiamo eseguire è scoprire se un software specifico è disponibile nello snap store. Per compiere questa azione possiamo usare il comando snap "trova" o "cerca" (quest'ultimo è un alias per il primo). Supponiamo di voler installare il pacchetto snap "gimp". Per vedere se l'applicazione è disponibile, possiamo eseguire:
$ snap find gimp
Come puoi vedere, il comando non richiede privilegi di amministratore. Restituisce il seguente output:
Name Version Publisher Notes Summary gimp 2.10.28 snapcrafters - GNU Image Manipulation Program gutenprint-printer-app 1.0 openprinting✓ - Gutenprint Printer Application photogimp 2.10.20 pedro.ermarinho - Patch para o GIMP djpdf 0.1.6 unrud - Create small, searchable PDFs from scanned documents lazpaint 7.1.6 chronoscz - Image editor with raster and vector layers.
Vengono restituite informazioni sui pacchetti disponibili che corrispondono ai nostri criteri di ricerca:
- Il nome del pacchetto
- La versione del pacchetto snap
- L'editore snap
- Eventuali note sul pacchetto
- Una breve descrizione del pacchetto
Installazione dei pacchetti snap
Per installare un pacchetto snap, tutto ciò che dobbiamo fare è usare il comando snap "install". Ad esempio, supponiamo di voler installare gimp
applicazione che abbiamo cercato nel passaggio precedente. Ecco il comando da eseguire:
$ sudo snap install gimp
Per impostazione predefinita, se non diversamente specificato, i pacchetti vengono installati dal canale "stabile". Una volta eseguito il comando sopra, possiamo tenere traccia dell'avanzamento dell'installazione leggendo l'output del terminale:
2022-03-29T14:25:15+02:00 INFO Waiting for automatic snapd restart... gimp 2.10.28 from Snapcrafters installed
Le versioni recenti degli snap supportano la modalità "confinamento classico". Quando un pacchetto snap viene installato in questa modalità, in realtà non confinato, in modo che possa accedere alle risorse sul sistema host. Se vogliamo installare un pacchetto in questa modalità, dobbiamo eseguire il comando "install" con il --classic
opzione.
I file relativi ai pacchetti snap e alle loro dipendenze vengono distribuiti sul sistema utilizzando SquashFS di sola lettura, sotto forma di dispositivi loop, che sono montati nelle directory corrispondenti sotto /var/lib/snapd
. Possiamo vederlo chiaramente dando un'occhiata all'output di lsblk
comando:
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 43.6M 1 loop /var/lib/snapd/snap/snapd/15177 loop1 7:1 0 55.5M 1 loop /var/lib/snapd/snap/core18/2344 loop2 7:2 0 4K 1 loop /var/lib/snapd/snap/bare/5 loop3 7:3 0 65.2M 1 loop /var/lib/snapd/snap/gtk-common-themes/1519 loop4 7:4 0 164.8M 1 loop /var/lib/snapd/snap/gnome-3-28-1804/161 loop5 7:5 0 391.3M 1 loop /var/lib/snapd/snap/gimp/383
Esiste un dispositivo di blocco loop per ogni pacchetto snap installato. Nel caso dello snap "gimp", se controlliamo il contenuto del /var/lib/snapd/snap/gimp/383
mountpoint (383 è la revisione del pacchetto snap – è possibile installare più revisioni contemporaneamente), possiamo vedere un intero albero di filesystem che ospita i file dell'applicazione:
$ ls /var/lib/snapd/snap/gimp/383 bin data-dir etc lib meta sbin snap usr var
Per poter avviare l'applicazione proprio come faremmo dopo l'installazione di un pacchetto nativo del sistema, il /var/lib/snapd/snap/bin
la directory deve essere aggiunta al nostro PATH
. Questo dovrebbe essere fatto automaticamente come parte dell'installazione di snapd. Possiamo verificarlo, controllando il valore della variabile:
$ echo $PATH /home/egdoc/.local/bin:/home/egdoc/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/var/lib/snapd/snap/bin
Aggiornamento di un pacchetto
Più revisioni di un pacchetto snap possono coesistere contemporaneamente. Abbiamo visto brevemente come la revisione attualmente installata del pacchetto gimp snap sia 383. La versione attiva corrente è collegata simbolicamente a /var/lib/snapd/snap/<package>/current
. Nel caso di gimp:
$ ls -l /var/lib/snapd/snap/gimp drwxr-xr-x. 11 root root 146 Nov 8 17:14 383 lrwxrwxrwx. 1 root root 3 Mar 29 14:27 current -> 383
Per verificare se è disponibile una nuova revisione di un pacchetto snap e aggiornarlo, possiamo utilizzare il refresh
comando. In questo caso, se proviamo ad aggiornare il pacchetto gimp, ci viene notificato che non sono disponibili aggiornamenti:
$ sudo snap refresh gimp snap "gimp" has no updates available
Se utilizziamo il refresh
comando senza specificare un nome di pacchetto come argomento, l'applicazione verificherà la presenza di aggiornamenti per tutti i pacchetti snap installati sul sistema.
Elenco dei pacchetti snap installati
Per ottenere un rapporto sui pacchetti snap attualmente installati, tutto ciò che dobbiamo fare è utilizzare il comando "list" dell'utilità snap. Vediamo un esempio del comando in azione:
$ snap list Name Version Rev Tracking Publisher Notes bare 1.0 5 latest/stable canonical✓ base core18 20220309 2344 latest/stable canonical✓ base gimp 2.10.28 383 latest/stable snapcrafters - gnome-3-28-1804 3.28.0-19-g98f9e67.98f9e67 161 latest/stable canonical✓ - gtk-common-themes 0.1-59-g7bca6ae 1519 latest/stable canonical✓ - snapd 2.54.4 15177 latest/stable canonical✓ snapd
Abbiamo installato esplicitamente "gimp", quindi tutti gli altri pacchetti sono stati installati come dipendenze o come "core" dell'infrastruttura snap. Un segno di spunta dopo il nome dell'editore del pacchetto significa che è stato verificato.
Creazione e gestione degli snapshot dei pacchetti
Una caratteristica interessante dell'ecosistema del pacchetto snap è la possibilità di creare snapshot di sistema, utente e dati di configurazione associati a un pacchetto. Le istantanee vengono create automaticamente quando viene rimosso un pacchetto snap, ma possono anche essere create manualmente con il save
comando. Per creare un'istantanea del pacchetto "gimp", ad esempio, eseguiremo:
$ sudo snap save gimp
Se non forniamo un nome di pacchetto come argomento per il comando di salvataggio, vengono create le istantanee per tutto il pacchetto esistente. Per ottenere un elenco degli snapshot esistenti sul sistema, possiamo utilizzare il saved
comando:
$ sudo snap saved Set Snap Age Version Rev Size Notes 1 gimp 20.0m 2.10.28 383 134kB auto 3 gnome-3-28-1804 10.4m 3.28.0-19-g98f9e67.98f9e67 161 124B -
Nell'output del comando possiamo vedere informazioni molto utili come lo snapshot id e la sua età . Per ripristinare uno snapshot utilizziamo il restore
comando e facciamo riferimento allo snapshot che vogliamo ripristinare con il suo id. Per ripristinare lo snapshot gimp che vediamo nell'output dell'esempio precedente, eseguiremo:
$ sudo snap restore 1 Restored snapshot #1.
Infine, per rimuovere manualmente uno snapshot esistente, utilizziamo forget
comando. Ecco cosa eseguiremmo per rimuovere lo snapshot gimp:
$ sudo snap forget 1 Snapshot #1 forgotten.
Rimozione dei pacchetti snap
Intuitivamente, per rimuovere un pacchetto snap precedentemente installato, dobbiamo usare remove
comando. Per impostazione predefinita, un pacchetto viene rimosso con tutte le revisioni installate. Se vogliamo rimuovere una specifica revisione di un pacchetto dobbiamo passarla come argomento al --revision
opzione. Quando si specifica una revisione, per rimuoverla, non deve essere quella "attiva", quindi se si tenta di utilizzare l'opzione quando si tratta di una sola versione di un pacchetto snap, il comando fallirà. Supponendo di voler rimuovere il pacchetto "gimp" che abbiamo installato in questo tutorial, ad esempio, eseguiremo:
$ sudo snap remove gimp
Oppure, nel caso esistano più revisioni:
$ sudo snap remove gimp --revision 383
Gli snapshot del pacchetto snap non vengono rimossi quando rimuoviamo il pacchetto (un'istantanea viene effettivamente creata quando il pacchetto viene rimosso). Per forzarne la rimozione, possiamo passare il --purge
opzione per remove
comando. Per rimuovere "gimp" con tutti gli snapshot associati, ad esempio, eseguiremo:
$ sudo snap remove --purge gimp
Conclusione
In questo tutorial abbiamo imparato come usare i pacchetti snap su Fedora. L'ecosistema dei pacchetti snap è stato originariamente sviluppato da Canonical per Ubuntu, ma poi è diventato disponibile anche su altre distribuzioni. Abbiamo imparato come cercare, installare, aggiornare e disinstallare i pacchetti snap su Fedora e come gestire gli snapshot dei pacchetti snap. Sebbene i pacchetti snap funzionino su Fedora, la tecnologia predefinita per le applicazioni autonome utilizzate sulla distribuzione è flatpak:se vuoi saperne di più e imparare ad usarlo, puoi dare un'occhiata al nostro tutorial sull'argomento.