Snap (manager de pachete) - Snap (package manager)

rapid
Logo-ul Snapcraft
Versiunile Firefox pe Snapcraft.png
Dezvoltatori Canonical Group Limited
Repertoriu
Sistem de operare Linux
Licență Licență publică generală GNU, versiunea 3.0
Site-ul web snapcraft .io Editați acest lucru pe Wikidata

Snap este un sistem de ambalare și implementare software dezvoltat de Canonical pentru sistemele de operare care utilizează kernel-ul Linux . Pachetele, denumite snaps , și instrumentul de utilizare a acestora, snapd , funcționează într-o gamă largă de distribuții Linux și permit dezvoltatorilor de software din amonte să își distribuie aplicațiile direct utilizatorilor. Snaps-urile sunt aplicații independente care rulează într-un sandbox cu acces mediat la sistemul gazdă. Snap a fost lansat inițial pentru aplicații cloud , dar ulterior a fost portat să funcționeze și pentru dispozitivele Internet of Things și pentru aplicațiile desktop.

Funcționalitate

Snap Store

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 pentru utilizatorii finali. În schimb, dezvoltatorii de aplicații își pot publica aplicațiile în Snap Store și le pot trimite direct către utilizatori fără nicio intervenție din partea întreținătorilor de distribuție.

Toate aplicațiile încărcate în Snap Store sunt supuse testării automate, inclusiv o scanare malware . Cu toate acestea, aplicațiile Snap nu primesc același nivel de verificare ca software în arhivele obișnuite Ubuntu. Într-un caz, în mai 2018, s-a găsit că două aplicații ale aceluiași dezvoltator conțineau un miner de criptomonede care a rulat în fundal în timpul executării aplicației. Când a fost găsită această problemă, Canonical a eliminat aplicațiile din Snap Store și a transferat proprietatea Snaps către o terță parte de încredere care a publicat din nou Snaps fără ca minerul să fie prezent. Deși sandbox-ul Snap reduce impactul unei aplicații dăunătoare, Canonical recomandă utilizatorilor să instaleze Snaps doar de la editori de încredere de către utilizator.

Deoarece pachetele din Snap Store sunt întreținute de dezvoltatori înșiși, distribuitorii nu se pot asigura că pachetele respectă standardele de calitate și 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.

Pachete universale Linux

Snaps-urile sunt pachete independente care funcționează pe o gamă largă 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.

Image
Rezultatul comenzii `snap list`: vedem instalate Skype și IntelliJ IDEA

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 securizat în formă adecvată pentru acea aplicație. După instalare, snap-ul este montat de sistemul de operare gazdă și decomprimat din mers când sunt utilizate fișierele. Deși acest lucru are avantajul că instantaneele utilizează mai puțin spațiu pe disc, înseamnă și că unele aplicații mari încep mai lent.

O diferență semnificativă între Snap și alte formate universale de ambalare Linux, cum ar fi Flatpak, este că Snap acceptă orice clasă 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 prin socket într-un Snap. Acest lucru face ca Snap să funcționeze cel mai bine numai pe distribuțiile care pot adopta acel sistem inițial .

Sandbox configurabil

Aplicațiile într-un Snap rulează într-un container cu acces limitat la sistemul gazdă. Utilizând interfețe , utilizatorii pot oferi acces unei aplicații mediată la funcții suplimentare ale gazdei, cum ar fi înregistrarea audio, accesarea dispozitivelor USB și înregistrarea videoclipurilor. Aceste interfețe mediază API-uri 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 proiectul Flatpak pentru a oferi acces aplicațiilor desktop sandbox la 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 obține 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 API-uri mai noi.

Sandbox-ul Snap acceptă, de asemenea, partajarea datelor și soclurile Unix î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ă puternic pe modulul de securitate AppArmor Linux din kernel-ul Linux din amonte . Deoarece doar un modul major de securitate Linux (LSM) poate fi activ în același timp, sandbox-ul Snap este mult mai puțin sigur atunci când este activat un alt LSM major. Ca urmare, pe distribuții precum Fedora care activează SELinux în mod implicit, sandbox-ul Snap este puternic degradat. Deși Canonical lucrează cu mulți alți dezvoltatori și companii pentru a face posibilă rularea mai multor LSM-uri în același timp, această soluție este încă mult timp departe.

Sandbox-ul Snap împiedică aplicațiile desktop capturate să acceseze temele sistemului de operare gazdă pentru a preveni problemele de compatibilitate. Pentru ca Snaps să folosească o temă, trebuie să fie, de asemenea, ambalată într-un Snap separat. Multe teme populare sunt împachetate de dezvoltatorii Snap, dar unele teme nu sunt încă acceptate, iar temele mai puțin frecvente trebuie instalate manual. Dacă o temă nu este disponibilă ca pachet Snap, utilizatorii trebuie să recurgă la alegerea celei mai bune teme potrivite disponibile. Lucrările sunt în curs de desfășurare pentru a facilita terților împachetarea temelor într-un Snap și instalarea automată a temelor de sistem neobișnuite.

Actualizări automate și atomice

De mai multe ori pe zi, snapd verifică actualizările disponibile ale tuturor Snaps și le instalează în fundal folosind operația atomică . Actualizările pot fi anulate și pot utiliza codarea delta pentru a reduce dimensiunea descărcării.

Editorii pot lansa și actualiza mai multe versiuni ale software-ului lor în paralel folosind canale . Fiecare canal are o pistă și un risc specific , care indică versiunea și stabilitatea software-ului lansat pe acel canal. Când instalați o aplicație, Snap implicit folosește latest/stablecanalul, 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 posibilitatea de a respecta versiunile majore specifice ale software-ului lor. De exemplu, un 2.0/stablecanal ar permite utilizatorilor să rămână la versiunea 2.0 a software-ului și să primească doar actualizări minore fără riscul modificărilor incompatibile înapoi. Atunci când editorul lansează o nouă versiune majoră într-un nou canal, utilizatorii se pot actualiza manual la următoarea versiune atunci când aleg.

Actualizările automate pot fi dezactivate folosind unele hacks, de asemenea, există multe modalități de a configura actualizările pentru a se potrivi nevoilor specifice. Utilizatorul poate alege să rămână pe o versiune majoră specifică a software-ului specificând canalul, poate configura intervalul de actualizare pentru a avea timp să verifice manual actualizările, de exemplu această comandă va verifica actualizarea în ultima vineri de la 23:00 la 01: 00

sudo snap set system refresh.timer=fri5,23:00-01:00

și pot păstra actualizări de până la 60 de zile. În plus, actualizările sunt, de asemenea, dezactivate automat la conexiunile măsurate. Chiar și cu aceste controale, un număr de utilizatori și-au exprimat plângerile cu privire la lipsa unei opțiuni de dezactivare completă a actualizărilor automate.

Snapcraft

snapcraft
Logo-ul Snapcraft
Dezvoltatori Canonical Group Limited
Versiune stabila
4.7 / 26 aprilie 2021 ; acum 5 luni ( 26 aprilie 2021 )
Repertoriu https://github.com/snapcore/snapcraft.git
Scris in Piton
Sistem de operare GNU / Linux
Licență Licență publică generală GNU, versiunea 3.0
Site-ul web snapcraft .io Editați acest lucru pe Wikidata

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 importarea metadatelor aplicației din mai multe surse, cum ar fi AppStream , git , script-uri shell și setup.pyfișiere.

Adopţie

Snap a acceptat inițial doar distribuția Ubuntu Core Snap, 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ă funcționalitate (systemd) disponibilă în majoritatea, dar nu în toate distribuțiile Linux, pe care alte sisteme similare Unix nu le au (de exemplu, FreeBSD ). Sistemul de operare Chrome nu acceptă Snap direct, doar prin distribuțiile Linux instalate în acesta care acceptă Snap, cum ar fi sistemul de operare Gallium .

O serie de distribuții Linux acceptă Snap out of the box, cum ar fi Ubuntu (și, de exemplu , Kubuntu , Xubuntu ), 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 .

O serie de companii notabile care dezvoltă software pentru desktop își publică software-ul în Snap Store, inclusiv Google , JetBrains , KDE , Microsoft (pentru versiunile Linux de ex. NET Core 3.1, Visual Studio Code , Skype și PowerShell ), Mozilla și Spotify . Instrucțiunile sunt, de asemenea, utilizate în mediile Internet-of-Things , variind de la produse orientate către consumatori 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ă schimbe browserul web Chromium în viitoarele versiuni Ubuntu de la un pachet APT la un Snap. Ei au explicat că Snap a făcut mult mai ușor să sprijine Chromium pe toate versiunile Ubuntu acceptate. Acest lucru le-a permis să concentreze resursele de inginerie pe alte părți ale desktopului Ubuntu. Ca urmare a acestei decizii, derivatele Ubuntu, cum ar fi Linux Mint, au trebuit să aleagă între menținerea propriei versiuni a pachetului Chromium sau trecerea la versiunea snaped a Chromium menținută de Canonical.

Recepţie

Câteva companii au lăudat Snap. Heroku a spus că actualizarea automată Snap se potrivește bine cu programul lor de lansare rapidă, Microsoft a menționat ușurința de utilizare și faptul este bazat pe yaml , precum și că este distribuție agnostică, iar JetBrains a spus că Snap Store oferă instrumentelor lor mai multă expunere.

Angajatul Red Hat, Adam Williamson, deși își recunoaște propriul prejudecată, l-a criticat pe Snap pentru că păstrează partea serverului închis, nu are un mecanism de utilizare a serverelor terțe și trebuie să semneze un contract de licență pentru a contribui la dezvoltarea acestuia.

Clement Lefebvre ( fondator și lider de proiect Linux Mint ) a scris că Snap este părtinitor și are un conflict de interese. Motivele pe care le-a citat includ că este guvernat de Canonical și blocat la magazinul lor și, de asemenea, că Snap funcționează mai bine pe Ubuntu decât pe alte distribuții. Ulterior, el a anunțat că instalarea Snap va fi blocată, deși va fi documentată o modalitate de a dezactiva această restricție.

Vezi si

Referințe

linkuri externe