Snap on Canonicali poolt välja töötatud tehnoloogia, mis lihtsustab tarkvara paigaldamist Ubuntu distributsiooni. See on suhteliselt hiljutine arendus. Snap'i arendamine toimus mitme aasta jooksul, kuid alles Ubuntu 16.04 versiooniga ilmus see sellises seisus, et see on masside jaoks kasutamisvalmis.
Snap'i peamine eelis on võimalus paigaldada programme ilma sõltuvusteta. Kõik vajalikud raamatukogud on juba koos programmiga pakendis ja selle käivitamiseks ei ole süsteemilt midagi vaja. Värskendamisel peab kasutaja uuendama ühte Snap paketti ilma süsteemi muutmata ning vigade ja vigade korral saab paketi tagasi keerata eelmisele versioonile. Veebis võib tihti kohata kasutajate vahel vaidlusi selle üle, kas snap-tehnoloogia on tõesti hea või tuleks sellest loobuda deb-pakettide
kasuks. Aga aeg ja testimine näitab. Järgnevalt vaatleme selles artiklis snap-pakettide
loomise protsessi. Nende loomine on veidi lihtsam kui samade deb-pakettide
loomine.
Snap-pakettide
loomiseks kasutame spetsiaalset tööriista nimega Snapcraft. See on ametlik tööriist snap-pakettide loomiseks, mis võimaldab arendajal programme pakendada, et ehitada vajalikke faile kogu süsteemi. Snapcraft võimaldab mitte ainult faile kopeerida, vaid ka lähtekoodi alla laadida ja programmi koostada.
Järgnevalt vaatame, kuidas luua snap-pakette
, kasutades näitena rakendust Samplenote.
Kõigepealt installige Snapcraft. Viimase versiooni saamiseks lisage meie süsteemi PPA:
$ sudo add-apt-repository ppa:snappy-dev/tools
Nüüd värskendage paketiloendit ja installige programm:
$ sudo apt-get update
$ sudo apt-get install snapcraft
Kui Snapcrafti paigaldamine on lõpetatud, saame edasi liikuda programmi lähtekoodi hankimiseks. Kõigepealt laadige GitHubist alla allikad ja pakendage need lahti:
$ 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
Kuna programmi ei ole vaja kompileerida, on meie ülesanne veidi lihtsam. Mine programmi kausta ja initsialiseeri seal Snapcrafti ehituskeskkond:
$ cd Simplenote-linux-x64
$ snapcraft init
Pärast viimase käsu täitmist ilmub kausta snapcraft.yml
fail. Selle faili redigeerimisega seadistame meie snap-paketi loomise protsessi. Vajame faili järgmise sisuga:
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
Esimesed neli rida on teave paketi enda kohta, programmi nimi, versioon ning lühike ja täielik kirjeldus.
Command - see on käsk programmi käivitamiseks, edaspidi kasutame skripti warpper
, sest meil on vaja määrata täiendavaid keskkonnamuutujaid.
Plugs
- need on liidesed, mida programm saab kasutada. Asi on selles, et snap programmid töötavad isoleeritud keskkonnas, kust nad ei saa ligipääsu riistvarale ja isikuandmetele. Et meie programm saaks korralikult töötada, peab see andma ligipääsu opengl
, unity7
ja võrguliidestele
.
Saadaolevaid liideseid ja neid kasutavaid programme saab näha, kui käivitada käsk:
$ snap interfaces
Osades
peate määrama programmifailid. Täpsemalt, mida snapcraft
peab tegema paketi loomisel. Kuna meil ei ole vaja midagi kompileerida, siis kasutame failide kopeerimiseks copy pluginat. Failid, mida on vaja kopeerida, on loetletud failide
sektsioonis. Seal ei ole ainult käivitatavad failid, vaid ka kõik vajalikud raamatukogud, nii et programm saab kõik vajalikud komponendid.
Kande vorming on järgmine:
system_file: snap_package_file_path
On üks mittestandardne kanne:
resources*: resources
Metsik märk *
võimaldab kopeerida kogu kataloogi. Selleks, et vältida kõikide failide kopeerimist süsteemist, on site-packages sektsioonis võimalus öelda programmile, millised paketid tuleb paigaldada snap-paketis, meie puhul on need libnss3
, fontconfig-config-config
ja gnome-themes-standard
.
Selleks, et näha, milliseid raamatukogusid programm kasutab, saab kasutada käsku:
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)
Oluline on see, et need raamatukogud tarnitakse koos programmiga, seega tuleb need täpsustada snapcraft.yaml
konfiguratsioonifailis. Kõik teised raamatukogud on süsteemis olemas ja snapcraft
tuvastab need automaatselt.
Järgmisena loome wrapper-faili
:
!/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" "$@"
See on siin lihtne - Bash
skript. Määrake kirjastuste teekonnad ja öelge programmile, kust raamatukogusid otsida, nii et libnote.so
ja libffmpeg.
so leitakse edukalt üles. Ja viimane rida käivitab simplenote
.
Järgmisena tuleb see fail käivitatavaks teha:
$ chmod +x wrapper
Paketi koostamise alustamiseks käivitage:
$ snapcraft
Build võib võtta veidi aega ja kui build on lõpetatud, saate paketi paigaldada:
$ sudo snap install simplenote_1.0.1_amd64.snap
Programmi käivitamiseks võite kasutada tavalist käsku:
$ simplenote
Nüüd on programm installeeritud. Rakenduste pakkimiseks saate kasutada täpselt sama meetodit, millega luuakse snap-paketid
.