28 dicembre 2020

Guida a Snap su Ubuntu

Snap è il nuovo sistema di pacchettizzazione usato da ubuntu e altre distrubzioni. In realtà è un meta-sistema ossia non è specifico di una distribuzione, inoltre rispetto ad altri sistemi come apt ha alcune feature di sicurezza e i binari di ogni pacchetto sono accompagnati dalle proprie librerie. Questo ovviamente significa anche che i binari contenuti negli snap sono più pesanti e più lenti nel caricamento. Più pesanti significa che occupano più spazio disco.

Vediamo i comando principali.



Cercare pacchetti: find

Con il comando find è possibile trovare pacchetti correlati con la parola chiave passato come argomento.

$ snap find firefox
Name                 Version        Publisher       Notes  Summary
firefox              84.0.1-1       mozilla✓        -      Mozilla Firefox web browser
keepassxc            2.6.2          keepassxreboot  -      Modern, secure, and cross-platform password manager compatible with KeePass
red-app              5.0            keshavnrj       -      Best Youtube Experience you will be ever served on Desktop !
dashkiosk            v2.7.3         ogra            -      Drive a set of screens displaying dashboards
orange-app           5.0            keshavnrj       -      SoundCloud Player / Downloader for Linux Desktop
joplin-arnatious     1.0.224        arnatious       -      Joplin is a free, open source note taking and to-do application.
downloadaccelerator  1.0            messey-bilal    -      A free tool to download files.
tncc-script          0+git.4192108  guilhem         -      wrapper for openconnect and pulse
firefox-kiosk        0.1            scout208        -      firefox example kiosk


Ottenere informazioni sui pacchetti: info

Il comando info serve ad ottenere informazioni sui pacchetti, come per esempio il nome del programmatore, la pagina web, la descrizioni e i canali. I quali sostanzialmente sono le versioni del pacchetto.

$ snap info cherrytree
name:      cherrytree
summary:   Hierarchical note taking application
publisher: Heather Ellsworth (hellsworth)
store-url: https://snapcraft.io/cherrytree
contact:   heather.ellsworth@canonical.com
license:   GPL-3.0+
description: |
  A hierarchical note taking application, featuring rich text and syntax highlighting, storing data
  in a single XML or SQLite file. The project home page is giuspen.com/cherrytree.
snap-id: ne8DjJO8ts6inYLWUlDs3jLlrITuHrJV
channels:
  latest/stable:    0.39.4  2020-07-09 (28) 72MB -
  latest/candidate: ↑                            
  latest/beta:      ↑                            
  latest/edge:      0.99.24 2020-12-17 (36) 71MB -


Installare un pacchetto: install

Il comando install come immaginerete serve ad installare i pacchetti.

$ sudo snap install tpad
[sudo] password for user: 
tpad 2.1 from Zhen Cao (caozhen) installed


Disinstallare un pacchetto: remove

Mentre il comando remove serve a disinstallare un pacchetto.

$ sudo snap remove tpad
tpad removed


Un po' di sicurezza: come isolare gli ambienti dei software installati

Snap permette di configurare le applicazioni in modo da essere isolate rispetto a certe parti del sistema. Queste parti di sistema si chiamano slot. Per avere la lista delle connessioni tra il software in oggetto e i rispettivi slot è sufficiente usare l'opzione connections.

root@rpippo8:~# snap connections electron-mail 
Interface                 Plug                                    Slot                                         Notes
audio-playback            electron-mail:audio-playback            :audio-playback                              -
browser-support           electron-mail:browser-support           :browser-support                             -
content[gnome-3-28-1804]  electron-mail:gnome-3-28-1804           gnome-3-28-1804:gnome-3-28-1804              -
content[gtk-3-themes]     electron-mail:gtk-3-themes              gtk-common-themes:gtk-3-themes               -
content[gtk-3-themes]     electron-mail:gtk-3-themes              gtk-theme-traditionalhumanized:gtk-3-themes  -
content[icon-themes]      electron-mail:icon-themes               gtk-common-themes:icon-themes                -
content[sound-themes]     electron-mail:sound-themes              gtk-common-themes:sound-themes               -
desktop                   electron-mail:desktop                   :desktop                                     -
desktop-legacy            electron-mail:desktop-legacy            :desktop-legacy                              -
gsettings                 electron-mail:gsettings                 :gsettings                                   -
home                      electron-mail:home                      -                                            -
network                   electron-mail:network                   :network                                     -
opengl                    electron-mail:opengl                    :opengl                                      -
password-manager-service  electron-mail:password-manager-service  -                                            -
pulseaudio                electron-mail:pulseaudio                :pulseaudio                                  -
unity7                    electron-mail:unity7                    :unity7                                      -
wayland                   electron-mail:wayland                   :wayland                                     -
x11                       electron-mail:x11                       :x11                                         -

Come potete vedere sulla destra c'è la colonna slot, che sono gli slot a cui è collegata l'applicazione. Lo slot è la parte del sistema operativo che cui puo' accedere l'applicazione. Sulla riga home nella colonna slot c'è un trattino. Questo perché l'applicazione è scollegata dallo slot. In questo caso significa che electron-mail non puo' accedere ad home cioè alle cartelle e ai file delle home directory. Ci sono anche altri slot, come per esempio netowork che naturalmente è la rete. Poi pulseaudio che sarebbe l'infrastruttura audio. Ecc ecc.

Per collegare un plug allo slot, quindi l'applicazione alla parte del sistema, bisogna utilizzare il comando connect . Per esempio se volessimo collegare la :home ad electron-mail dovremmo utilizzare il seguente codice:

# snap connect electron-mail:home :home
e infatti:
# snap connections  electron-mail 
Interface                 Plug                                    Slot                                         Notes
audio-playback            electron-mail:audio-playback            :audio-playback                              -
browser-support           electron-mail:browser-support           :browser-support                             -
content[gnome-3-28-1804]  electron-mail:gnome-3-28-1804           gnome-3-28-1804:gnome-3-28-1804              -
content[gtk-3-themes]     electron-mail:gtk-3-themes              gtk-common-themes:gtk-3-themes               -
content[gtk-3-themes]     electron-mail:gtk-3-themes              gtk-theme-traditionalhumanized:gtk-3-themes  -
content[icon-themes]      electron-mail:icon-themes               gtk-common-themes:icon-themes                -
content[sound-themes]     electron-mail:sound-themes              gtk-common-themes:sound-themes               -
desktop                   electron-mail:desktop                   :desktop                                     -
desktop-legacy            electron-mail:desktop-legacy            :desktop-legacy                              -
gsettings                 electron-mail:gsettings                 :gsettings                                   -
home                      electron-mail:home                      :home                                        manual
network                   electron-mail:network                   :network                                     -
opengl                    electron-mail:opengl                    :opengl                                      -
password-manager-service  electron-mail:password-manager-service  -                                            -
pulseaudio                electron-mail:pulseaudio                :pulseaudio                                  -
unity7                    electron-mail:unity7                    :unity7                                      -
wayland                   electron-mail:wayland                   :wayland                                     -
x11                       electron-mail:x11                       :x11                                         -

In questo modo avremmo scollegato il client di posta dalla home directory, in modo da evitare che se il processo venisse compromesso questo potrebbe andare ad esplorare la nostro file e cartelle della nostra home directory.

Allo stesso modo possiamo scolleggarlo:

# snap disconnect electron-mail:home :home

Al seguente link troverete l'elenco con le interfacce/slot con le rispettive dispiegazioni.