Metode de plată Abuse

Cum să creați un pachet Snap Ubuntu 16

11.06.2021, 19:26

Snap este o tehnologie dezvoltată de Canonical pentru a facilita instalarea de software în distribuția Ubuntu. Este o dezvoltare relativ recentă. Dezvoltarea Snap a avut loc pe parcursul mai multor ani, dar numai prin lansarea Ubuntu 16.04 a apărut într-o stare în care este gata de utilizare de către mase.

Principalul avantaj al Snap este capacitatea de a instala programe fără dependențe. Toate bibliotecile necesare sunt deja în pachetul cu programul și nu este nevoie de nimic din partea sistemului pentru a-l rula. La actualizare, utilizatorul trebuie să actualizeze un pachet Snap fără a face modificări în sistem, iar în caz de eșecuri și erori poate reveni la versiunea anterioară a pachetului. Pe internet puteți întâlni adesea discuții între utilizatori cu privire la faptul dacă tehnologia snap este cu adevărat bună sau dacă ar trebui abandonată în favoarea pachetelor deb. Dar timpul și testele vor spune. În continuare în acest articol vom analiza procesul de creare a pachetelor snap. Crearea acestora este un pic mai ușoară decât a acelorași pachete deb.

Crearea pachetelor snap în Ubuntu 16.04

Pentru a crea pachetele snap vom utiliza un instrument special numit Snapcraft. Acesta este instrumentul oficial pentru crearea pachetelor snap, care permite dezvoltatorului să împacheteze programe pentru a construi fișierele necesare în întregul sistem. Snapcraft vă permite nu numai să copiați fișiere, ci și să descărcați codul sursă și să construiți programul.

În continuare, să vedem cum se creează pachetele snap folosind ca exemplu aplicația Samplenote.

În primul rând, instalați Snapcraft. Pentru a obține cea mai recentă versiune, adăugați un PPA la sistemul nostru:

$ sudo add-apt-repository ppa:snappy-dev/tools

Acum actualizați lista de pachete și instalați programul:

$ sudo apt-get update
$ sudo apt-get install snapcraft

Când instalarea Snapcraft este completă, putem trece la obținerea codului sursă al programului. În primul rând, descărcați sursele de pe GitHub și dezarhivați-le:

$ wget https://github.com/Automattic/simplenote-electron/releases/download/v1.0.1/Simplenote-linux-x64.1.0.1.tar.gz
$ tar xvzf Simplenote-linux-x64.1.0.1.tar.gz

Deoarece programul nu trebuie compilat, sarcina noastră este puțin mai ușoară. Mergeți la folderul cu programul și inițializați acolo mediul de compilare Snapcraft:

$ cd Simplenote-linux-x64
$ snapcraft init

După executarea ultimei comenzi, fișierul snapcraft.yml va apărea în folder. Prin editarea fișierului, să configurăm procesul de creare a pachetului nostru snap. Vom avea nevoie de un fișier cu următorul conținut:

name: simplenote
version: 1.0.1
summary: The simplest way to keep notes.
description: The simplest way to keep notes. Light, clean, and free.
apps:
simplenote:
command: usr/bin/wrapper
plugs:
- unity7
- opengl
- network
parts:
simplenote:
plugin: copy
stage-packages:
- libnss3
- fontconfig-config
- gnome-themes-standard
files:
Simplenote: Simplenote
wrapper: usr/bin/wrapper
icudtl.dat: icudtl.dat
snapshot_blob.bin: snapshot_blob.bin
natives_blob.bin: natives_blob.bin
resources*: resources
libnode.so: usr/lib/x86_64-linux-gnu/libnode.so
libffmpeg.so: usr/lib/x86_64-linux-gnu/libffmpeg.so

Primele patru linii sunt informații despre pachetul în sine, numele programului, versiunea și o descriere scurtă și completă.

Command - aceasta este comanda pentru a porni programul, în continuare vom folosi scriptul warpper, deoarece trebuie să specificăm variabile de mediu suplimentare.

Plugs - acestea sunt interfețele care pot fi utilizate de program. Ideea este că programele snap funcționează într-un mediu izolat, de unde nu pot avea acces la hardware și date personale. Pentru ca programul nostru să funcționeze corect, acesta trebuie să ofere acces la interfețele opengl, unity7 și de rețea.

Puteți vedea interfețele disponibile și programele care le utilizează executând comanda:

$ snap interfaces

În secțiunea părți trebuie să specificați fișierele programului. Mai exact, ce trebuie să facă snapcraft atunci când creează un pachet. Deoarece nu trebuie să compilăm nimic, folosim pluginul copy pentru a copia fișiere. Fișierele care trebuie copiate sunt listate în secțiunea files. Nu există doar fișiere executabile, ci și toate bibliotecile necesare, astfel încât programul va primi toate componentele de care are nevoie.

Formatul intrării este următorul:

system_file: snap_package_file_path

Există o intrare non-standard:

resources*: resources

Caracterul wildcard * vă permite să copiați întregul director. Pentru a evita copierea tuturor fișierelor din sistem, există o opțiune în secțiunea site-packages pentru a indica programului ce pachete ar trebui instalate în pachetul snap, în cazul nostru acestea fiind libnss3, fontconfig-config-config și gnome-themes-standard.

Pentru a vedea ce biblioteci utilizează programul, puteți utiliza comanda:

ldd Simplenote | grep Simplenote
libnode.so => /home/sergiy/test/Simplenote/Simplenote-linux-x64/./libnode.so (0x00007f05fb477000)
libffmpeg.so => /home/sergiy/test/Simplenote/Simplenote-linux-x64/./libffmpeg.so (0x00007f05f61ec000)

Lucrul important este că aceste biblioteci sunt livrate împreună cu programul, deci trebuie să le specificăm în fișierul de configurare snapcraft.yaml. Toate celelalte biblioteci sunt disponibile pe sistem și vor fi detectate automat de snapcraft.

În continuare, să creăm fișierul wrapper:

!/bin/sh
export FONTCONFIG_PATH=$SNAP/etc/fonts
export FONTCONFIG_FILE=$SNAP/etc/fonts/fonts.conf
export XDG_DATA_HOME=$SNAP/usr/share
export LD_LIBRARY_PATH=$SNAP_LIBRARY_PATH:$SNAP/usr/lib/x86_64-linux-gnu/
exec "$SNAP/Simplenote" "$@"

Acest lucru este simplu aici - un script Bash. Setați căile pentru fonturi și spuneți programului unde să caute bibliotecile, astfel încât libnote. so și libffmpeg.so să fie găsite cu succes. Iar ultima linie pornește simplenote.

Următorul lucru rămas de făcut este să facem acest fișier executabil:

$ chmod +x wrapper

Pentru a începe construirea pachetului, executați:

$ snapcraft

Construcția poate dura ceva timp, iar odată ce construcția este completă, puteți instala pachetul:

$ sudo snap install simplenote_1.0.1_amd64.snap

Puteți utiliza comanda obișnuită pentru a rula programul:

$ simplenote

Acum programul este instalat. Puteți utiliza exact aceeași metodă de creare a pachetelor snap pentru a vă împacheta aplicațiile.