Introduzione
Cosa sono gli snap e perché dovresti usarli? L'ecosistema Linux ha sofferto di un vecchio problema sin dagli albori del concetto di "distribuzione", e quel
problema è la frammentazione. Uno dei maggiori problemi che causano questa frammentazione sono i diversi formati di pacchetto; Non riesco a eseguire i miei .debs sul mio sistema Fedora o i miei .rpms sulla mia macchina
Ubuntu. Sì, abbiamo alien, che dovrebbe consentire la transizione tra i due formati, ma ci sono due problemi con questo approccio:ci sono altri pacchetti
formati oltre a rpm e deb e inoltre, alien non funziona sempre come previsto . Quindi il problema è ancora lì, o dovrei dire, c'era. Entra in snap, il formato di pacchetto Linux
universale, che si sforza di offrire a utenti e sviluppatori un unico formato di pacchetto e facilità quando si tratta di creare nuovi pacchetti con le applicazioni e le librerie
che sono necessarie, assicurando che detti pacchetti sono facilmente condivisibili tra le distribuzioni. Dell, Samsung e la Linux Foundation sono citati come contributori, mentre tra le
distribuzioni supportate ci sono Fedora, Ubuntu, Arch o OpenSUSE.
Questo articolo descriverà in dettaglio come utilizzare gli snap come utente semplice, nonché istruzioni per sviluppatori/packer
su come creare snap per l'utilizzo da parte di altri. Il sistema operativo che utilizzeremo è Ubuntu 16.04, ma le istruzioni seguenti non dovrebbero essere difficili da adattare ad altre distribuzioni.
Snap come utente semplice
Questa parte ti darà una panoramica di Snap dal punto di vista dell'utente:come installare gli strumenti necessari e come usarli per l'uso quotidiano
di base. Innanzitutto, devi installare snapcraft, un pacchetto che fornisce snap, lo strumento di riferimento per le suddette operazioni quotidiane:
$ sudo apt install snapcraft
È tutto. Ora, prima di andare oltre, parliamo di alcuni dettagli:in primo luogo, le applicazioni offerte come snap sono contenitori isolati, il che aiuta molto in termini di consumo di risorse
e di sicurezza. Troverai tutto installato da snap in /snap/
, che a sua volta ha una propria gerarchia :/snap/bin
, /snap/lib
e così via. In secondo luogo,
ricevi gli aggiornamenti automaticamente. Terzo, pensa agli snap come complementari ai pacchetti Linux esistenti, non come sostituti (beh, non ora, comunque).
E infine, gli snap sono facilmente
integrabili con il software installato, sfruttando le librerie esistenti tramite le interfacce.
Come dicevamo in passato, non c'è alcun sostituto per il manuale. Quindi, mentre ti faremo un tour, se vuoi approfondire dovrai leggere un po' da solo. Quindi
cominciamo con le operazioni di snap di base:se vuoi cercare un pacchetto, fallo
$ snap find hello
Qui, "ciao" è la stringa di esempio che stiamo cercando. Andando oltre con la stessa stringa, installiamo qualcosa :
$ sudo snap install hello
Puoi visualizzare gli snap installati con 'elenco' :
$ snap list
Aggiorna con aggiornamento, tutto ciò che hai installato o solo alcuni snap :
$ sudo snap refresh OR $ sudo snap refresh hello
La novità (sì, puoi ripristinare con yum per esempio, e non solo, ma non sempre funziona come vuoi) è il comando 'revert':
$ sudo snap revert hello
Utilizzo di snap come sviluppatore
Preparazione
Innanzitutto, vediamo di cosa hai bisogno per iniziare a creare snap. Lo strumento del mestiere è
chiamato snapd e su Ubuntu e Debian è semplice come
$ sudo apt install snapd snapcraft
mentre su Fedora puoi fare
$ sudo dnf copr enable zyga/snapcore $ sudo dnf install snapd $ sudo systemctl enable --now snapd.service $ sudo setenforce 0 $ sudo $editor /etc/selinux/config #set SELINUX=permissive and reboot to make SELINUX settings permanent
e basta. Tuttavia, c'è un problema. Sebbene questi strumenti funzionino con la maggior parte delle principali distribuzioni Linux, snapcraft, lo strumento che installeremo e utilizzeremo in modo da poter imparare a creare snap, è disponibile nei repository di Ubuntu e AUR, per quanto ne sappiamo. Il resto degli
utenti Linux dovrà semplicemente clonare il repository git (https://github.com/snapcore/snapcraft) e compilarlo.
Fare il tour e creare uno snap
Prima di continuare, tieni presente che i tuoi snap (o quelli esistenti) saranno e sono molto
più grandi dei pacchetti di repository corrispondenti. Come mai? Perché contengono anche tutte le dipendenze necessarie per il funzionamento dei programmi, quindi
sono autosufficienti, in un certo senso. Dopo aver installato snapcraft, ti consigliamo di fare il tour :
$ snapcraft tour
Questo comando inizializzerà alcune directory e sottodirectory (per impostazione predefinita in ./snapcraft-tour
) e otterrai codice sorgente
campioni, istruzioni e passaggi numerati che ti guideranno attraverso le nozioni di base. Ad esempio, il primo passo è, in quale altro modo?,
ciao mondo. Digita
$ cd snapcraft-tour/00-SNAPCRAFT/01-easy-start
e vedrai solo il file .yaml lì dentro, che fondamentalmente è il file che descrive lo snap. Dai un'occhiata, vedrai
che definisce il nome, cosa recuperare, da dove, quale applicazione risulterà e così via. Successivamente, corri
$ snapcraft
all'interno della directory sopra e farà tutto il necessario e ti darà un attimo. Detto snap può essere installato, a condizione che tu sia ancora
nella directory menzionata sopra, con
$ sudo snap install ./hello*.snap
Prenditi del tempo per giocare con il file .yaml (farne una copia è sempre una buona idea), guarda cosa succede se modifichi alcune
variabili lì e scopri come le tue modifiche influenzano la creazione dello snap. Ricorda che puoi sempre distribuire il tuo snap ai
tuoi amici o creare un repository per esso. Un'ultima nota:la sezione "sorgente" in .yaml ha un URL come valore, ma puoi anche
avere un valore locale, ad es. ./src/my_dep/
.
Ultime parole
Abbiamo appena scalfito la superficie con gli snap, intendiamoci, ma c'è molto da imparare e cose interessanti da fare con gli
scatti! L'eterno problema di avere software impacchettato solo come, ad esempio, RPM e dare agli utenti mal di testa quando necessario su Debian, per
ad esempio, sembra essere finito. Come sempre, ti incoraggiamo a giocare con gli snap, crearne alcuni e non dimenticare di condividerli! Buon divertimento!