Snap este un sistem de ambalare și implementare software dezvoltat de Canonical pentru sistemele de operare care utilizează kernel-ul Linux. Pachetele, numite snaps , și instrumentul pentru a le utiliza, snapd , rulează pe o serie de distribuții Linux și permite dezvoltatorilor de software să își distribuie aplicațiile direct utilizatorilor. Snaps-urile sunt aplicații independente care rulează într-un sandbox cu acces moderat la sistemul gazdă. Snap a fost lansat inițial pentru aplicații cloud, dar ulterior a fost portat pentru a funcționa atât pentru dispozitivele Internet of Things , cât și pentru aplicațiile desktop.
Snap Store permite dezvoltatorilor să își publice aplicațiile direct utilizatorilor. Cu abordările tradiționale de gestionare a pachetelor Linux, cum ar fi APT sau YUM , aplicațiile sunt ambalate și distribuite ca parte a sistemului de operare. Acest lucru creează o întârziere între dezvoltarea aplicației și implementarea acesteia către utilizatorii finali. În schimb, dezvoltatorii de aplicații își pot publica aplicațiile în Snap Store și le pot livra direct utilizatorilor fără nicio intervenție din partea managerilor de distribuție.
Toate aplicațiile descărcate din Snap Store sunt supuse autotestării, inclusiv o scanare malware. Cu toate acestea, aplicațiile Snap nu primesc același nivel de verificare ca software-ul în arhivele normale Ubuntu. Într-un caz, în mai 2018, s-a găsit că două aplicații de la același dezvoltator conțin un miner de criptomonede care rulează în fundal în timp ce aplicația rulează. Când a fost detectată această problemă, Canonical a eliminat aplicațiile din Snap Store și a transferat calitatea de proprietate asupra Snaps către o terță parte de încredere care a repostat Snaps fără prezența minerului. Deși sandbox-ul Snap reduce impactul unei aplicații dăunătoare, Canonical recomandă utilizatorilor să instaleze Snaps doar de la editori aprobați de utilizator.
Deoarece pachetele Snap Store sunt gestionate chiar de dezvoltatori, managerii de distribuție nu pot garanta că pachetele respectă standardele de calitate și că sunt actualizate în timp util. Într-un caz, Microsoft a lăsat o versiune învechită a Skype în magazinul Snapcraft timp de peste un an.
În timp ce Canonical's Snap Store este în prezent singurul magazin existent pentru snaps, Snap în sine poate fi utilizat fără magazin. Pachetele Snap pot fi obținute din orice sursă, inclusiv site-ul web al dezvoltatorului. Angajatul Red Hat, Adam Williamson, și managerul de proiect Linux Mint, Clement Lefebre, au criticat Canonical pentru că au ținut închise anumite porțiuni de pe serverul magazinului Snap. Clement spune că acest lucru creează un conflict de interese care subminează neutralitatea lui Snap în timp ce Canonical dezvoltă Ubuntu.
Snaps-urile sunt pachete independente care rulează pe o serie de distribuții Linux . Acest lucru este diferit de abordările tradiționale de gestionare a pachetelor Linux, care necesită pachete special adaptate pentru fiecare distribuție Linux.
Formatul de fișier snap este un singur sistem de fișiere comprimat care utilizează formatul SquashFS cu extensia .snap. Acest sistem de fișiere conține aplicația, bibliotecile de care depinde și metadatele declarative. Aceste metadate sunt interpretate de snapd pentru a configura un sandbox sigur adecvat pentru funcționarea aplicației. După instalare, snap-ul este montat de sistemul de operare gazdă și dezarhivat din mers când fișierele sunt utilizate. Deși acest lucru are avantajul că instantaneele utilizează mai puțin spațiu pe disc, înseamnă, de asemenea, că unele aplicații mari încep mai încet.
O diferență semnificativă între Snap și alte formate universale de ambalare Linux, cum ar fi Flatpak, este că Snap acceptă toate clasele de aplicații Linux, cum ar fi aplicații desktop, instrumente server, aplicații IoT și chiar servicii de sistem, cum ar fi stiva de drivere a imprimantei. Pentru a asigura acest lucru, Snap se bazează pe systemd pentru funcții precum rularea serviciilor de sistem activate cu socket într-un Snap. Acest lucru face ca Snap să funcționeze mai bine doar pe distribuțiile care pot adopta acest sistem de boot .
Aplicațiile într-un Snap rulează într-un container cu acces limitat la sistemul gazdă. Utilizând interfețe , utilizatorii pot oferi unei aplicații acces moderat la caracteristici suplimentare ale gazdei, cum ar fi înregistrarea audio, accesul la dispozitivele USB și înregistrarea video. Aceste interfețe mediază API-urile Linux obișnuite, astfel încât aplicațiile să poată funcționa în sandbox fără a fi nevoie să fie rescrise. Aplicațiile desktop pot utiliza, de asemenea, XDG Desktop Portals, un API standardizat creat inițial de Flatpak Project pentru a permite aplicațiilor desktop sandbox să acceseze resursele gazdei. Aceste portaluri oferă adesea o experiență de utilizare mai bună în comparație cu API-urile native Linux, deoarece solicită utilizatorului permisiunea de a accesa resurse, cum ar fi o cameră web în momentul în care aplicația le folosește. Dezavantajul este că aplicațiile și seturile de instrumente trebuie rescrise pentru a utiliza aceste noi API-uri.
Snap Sandbox acceptă, de asemenea, partajarea datelor Unix și a soclurilor între Snaps. Aceasta este adesea utilizată pentru a partaja biblioteci comune și cadre de aplicații între Snaps pentru a reduce dimensiunea Snaps evitând duplicarea.
Sandbox-ul Snap se bazează foarte mult pe modulul de securitate AppArmor al kernel-ului Linux . Deoarece doar un modul major de securitate Linux (LSM) poate fi activ la un moment dat, sandbox-ul Snap este mult mai puțin sigur atunci când este activat un alt LSM major. Prin urmare, pe distribuții precum Fedora care activează SELinux în mod implicit, sandbox-ul Snap este grav degradat. Deși Canonical lucrează cu mulți alți dezvoltatori și companii pentru a permite mai multor LSM-uri să ruleze simultan, această soluție nu este încă operațională.
Snap sandbox împiedică aplicațiile desktop să acceseze temele sistemului de operare gazdă pentru a evita problemele de compatibilitate. Pentru ca Snaps să folosească o temă, acestea trebuie să fie, de asemenea, ambalate într-un Snap separat. Multe teme populare sunt împachetate de dezvoltatorii Snap, dar unele teme nu sunt încă acceptate și teme neobișnuite trebuie instalate manual. Dacă o temă nu este disponibilă ca pachet Snap, utilizatorii ar trebui să aleagă cea mai bună temă potrivită disponibilă. Lucrările sunt în curs de desfășurare pentru a facilita terților să grupeze temele într-un Snap și să instaleze automat teme de sistem neobișnuite.
De câteva ori pe zi, snapd verifică actualizările disponibile pentru toate Snaps și le instalează în fundal folosind o operație atomică. Actualizările pot fi anulate și pot utiliza codificarea delta pentru a reduce dimensiunea descărcării.
Editorii pot publica și actualiza mai multe versiuni ale software-ului lor în paralel folosind canale . Fiecare canal are o pistă ( pistă ) și un risc ( risc ) specific, indicând lansarea și stabilitatea software-ului publicat pe acest canal. Când instalați o aplicație, Snap implicit este canalul latest/stable, care se va actualiza automat la noile versiuni majore ale software-ului atunci când acestea vor fi disponibile. Editorii pot crea canale suplimentare pentru a oferi utilizatorilor flexibilitatea de a se adapta la anumite versiuni majore ale software-ului lor. De exemplu, s-ar 2.0/stablepermite utilizatorilor să rămână cu versiunea 2.0 a software-ului și să primească doar actualizări minore, fără riscul modificărilor compatibile înapoi. Când editorul lansează o nouă versiune majoră într-un nou canal, utilizatorii pot face upgrade manual la următoarea versiune oricând doresc.
Deși actualizările automate nu pot fi dezactivate, există multe modalități de a configura actualizările pentru a satisface nevoile specifice. Utilizatorul poate alege să rămână pe o anumită versiune majoră a software-ului specificând canalul, poate configura intervalul de actualizare pentru a avea timp să verifice manual actualizările și poate suspenda actualizările până la. 'Până la 60 de zile. În plus, actualizările sunt, de asemenea, dezactivate automat pentru conexiuni limitate. Chiar și cu aceste verificări, un număr de utilizatori s-au plâns de lipsa unei opțiuni de dezactivare completă a actualizărilor automate.
Snapcraft este un instrument pentru dezvoltatori pentru a-și împacheta programele în format Snap. Funcționează pe orice distribuție Linux acceptată de Snap, macOS și Microsoft Windows . Snapcraft construiește pachetele într-o mașină virtuală folosind Multipass, pentru a se asigura că rezultatul unei construcții este același, indiferent de distribuția sau sistemul de operare pe care este construit. Snapcraft acceptă un număr mare de instrumente de construcție și limbaje de programare precum Go , Java , JavaScript , Python , C / C ++ și Rust . De asemenea, permite importul de metadate ale aplicației din mai multe surse, cum ar fi AppStream, git , script-uri shell și fișiere setup.py.
Inițial, Snap a acceptat doar distribuția Ubuntu Core, dar în iunie 2016 a fost portată la o gamă largă de distribuții Linux pentru a deveni un format pentru pachetele Linux universale. Snap necesită o caracteristică (systemd), disponibilă pe Linux, unele alte sisteme de tip Unix nu au una, deci, de exemplu, FreeBSD nu are Snap. Sistemul de operare Chrome nu acceptă Snap direct, doar prin distribuțiile Linux instalate care acceptă Snap, cum ar fi sistemul de operare Gallium.
O serie de distribuții Linux acceptă Snap nativ, cum ar fi Ubuntu (și de exemplu Kubuntu), Manjaro , Zorin OS , KDE Neon, Solus și Li-fe. Snap este, de asemenea, disponibil pentru multe alte distribuții, cum ar fi CentOS , Debian , Elementary OS , Fedora , GalliumOS, Kali Linux , Linux Mint , OpenEmbedded, Parrot Security OS, Pop! OS , Raspbian , Red Hat Enterprise Linux și openSUSE .
Un număr de companii de dezvoltare de software desktop își publică software-ul în Snap Store, inclusiv Google , JetBrains , KDE , Microsoft (pentru versiunile Linux de exemplu .NET Core 3.1, Visual Studio Code, Skype și PowerShell), Mozilla și Spotify . Snaps-urile sunt, de asemenea, utilizate în mediile Internet of Things , variind de la produse de larg consum până la gateway-uri de gestionare a dispozitivelor de întreprindere și rețele de comunicații prin satelit . În cele din urmă, Snap este, de asemenea, utilizat de dezvoltatorii de aplicații de server precum InfluxDB , Kata Containers, Nextcloud și Travis CI .
În 2019, Canonical a decis să actualizeze browserul web Chromium în versiunile viitoare de Ubuntu de la un pachet APT la un Snap. Au explicat că Snap a făcut mult mai ușor să sprijine Chromium pe toate versiunile de Ubuntu acceptate. Acest lucru le-a permis să concentreze resursele de inginerie pe alte părți ale Ubuntu. Ca urmare a acestei decizii, derivatele Ubuntu, cum ar fi Linux Mint, au trebuit să aleagă între păstrarea propriei versiuni a pachetului Chromium sau trecerea la versiunea snaped a Chromium menținută de Canonical. Clement Lefebre, fondator și manager de proiect al Linux Mint, a menționat acest lucru ca motiv pentru care Linux Mint 20 împiedică utilizatorii să instaleze Snap. Deoarece Snap este încă disponibil în depozitele Linux Mint, utilizatorii îl pot instala în continuare după eliminarea manuală a restricțiilor.
(ro) Acest articol este preluat parțial sau în întregime de pe pagina Wikipedia engleză intitulată „ Snap (manager de pachete) ” ( vezi lista autorilor ) .