Makseviisid Abuse

Kuidas luua Snap pakett Ubuntu 16

11.06.2021, 19:26

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 loomine Ubuntu 16.04s

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.