Snap ir Canonical izstrādāta tehnoloģija, lai atvieglotu programmatūras instalēšanu Ubuntu izplatīšanā. Tā ir salīdzinoši nesen izstrādāta. Snap izstrāde ilga vairākus gadus, bet tikai līdz Ubuntu 16.04 iznākšanai tā parādījās tādā stāvoklī, ka ir gatava masveida lietošanai.
Snap galvenā priekšrocība ir iespēja instalēt programmas bez atkarībām. Visas nepieciešamās bibliotēkas jau ir programmas paketē kopā ar programmu, un, lai to palaistu, no sistēmas nekas netiek prasīts. Veicot atjaunināšanu, lietotājam ir jāatjaunina viena Snap pakete, neveicot izmaiņas sistēmā, un kļūdu un kļūdu gadījumā lietotājs var atgriezt paketi iepriekšējā versijā. Tīmeklī bieži var sastapties ar lietotāju strīdiem par to, vai snap tehnoloģija patiešām ir laba, vai arī no tās vajadzētu atteikties par labu deb
paketēm. Taču to rādīs laiks un testēšana. Tālāk šajā rakstā aplūkosim snap
pakotņu izveides procesu. To izveide ir nedaudz vienkāršāka nekā deb
pakotņu izveide.
Lai izveidotu snap
paketes, mēs izmantosim īpašu rīku Snapcraft. Tas ir oficiālais snap paku izveides rīks, kas ļauj izstrādātājam veidot paku programmas, lai izveidotu nepieciešamos failus visā sistēmā. Snapcraft ļauj ne tikai kopēt failus, bet arī lejupielādēt pirmkodu un izveidot programmu.
Tālāk apskatīsim, kā izveidot snap
paketes, kā piemēru izmantojot programmu Samplenote.
Vispirms instalējiet Snapcraft. Lai iegūtu jaunāko versiju, pievienojiet mūsu sistēmai PPA:
$ sudo add-apt-repository ppa:snappy-dev/tools
Tagad atjauniniet pakešu sarakstu un instalējiet programmu:
$ sudo apt-get update
$ sudo apt-get install snapcraft
Kad Snapcraft instalēšana ir pabeigta, mēs varam pāriet pie programmas pirmkoda iegūšanas. Vispirms lejupielādējiet avotus no GitHub un izaiciniet tos:
$ 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
Tā kā programma nav jākompilē, mūsu uzdevums ir nedaudz vienkāršāks. Dodieties uz mapi ar programmu un tajā inicializējiet Snapcraft izveides vidi:
$ cd Simplenote-linux-x64
$ snapcraft init
Pēc pēdējās komandas izpildes mapē parādīsies fails snapcraft.yml.
Rediģējot šo failu, konfigurēsim mūsu snap paketes izveides procesu. Mums būs nepieciešams fails ar šādu saturu:
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
Pirmajās četrās rindiņās ir informācija par pašu paketi, programmas nosaukums, versija un īss un pilnīgs apraksts.
Komanda - tā ir komanda programmas palaišanai, tālāk mēs izmantosim skripta warpper
, jo mums ir jānorāda papildu vides mainīgie.
Plugs
- tās ir saskarnes, ko var izmantot programma. Runa ir par to, ka snap programmas darbojas izolētā vidē, no kuras tās nevar piekļūt aparatūrai un personiskajiem datiem. Lai mūsu programma darbotos pareizi, tai ir jānodrošina piekļuve opengl
, unity7
un tīkla
saskarnēm.
Pieejamās saskarnes un programmas, kas tās izmanto, var apskatīt, izpildot komandu:
$ snap interfaces
Sadaļu
sadaļā jānorāda programmas faili. Konkrēti, kas snapcraft
ir jādara, veidojot paketi. Tā kā mums nekas nav jākompilē, mēs izmantojam kopēšanas spraudni, lai kopētu failus. Failu sadaļā ir uzskaitīti faili
, kas jākopē. Tur ir ne tikai izpildāmie faili, bet arī visas nepieciešamās bibliotēkas, tāpēc programma saņems visas tai nepieciešamās sastāvdaļas.
Ieraksta formāts ir šāds:
system_file: snap_package_file_path
Ir viens nestandarta ieraksts:
resources*: resources
Ar aizstājējzīmi *
var kopēt visu direktoriju. Lai izvairītos no visu failu kopēšanas no sistēmas, sadaļā site-packages ir iespēja norādīt programmai, kuras paketes jāinstalē snap paketē, mūsu gadījumā tās ir libnss3
, fontconfig-config-config
un gnome-themes-standard
.
Lai redzētu, kuras bibliotēkas programma izmanto, varat izmantot komandu:
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)
Svarīgi ir tas, ka šīs bibliotēkas tiek piegādātas kopā ar programmu, tāpēc mums tās jānorāda konfigurācijas failā snapcraft.yaml.
Visas pārējās bibliotēkas ir pieejamas sistēmā, un snapcraft
tās noteiks automātiski.
Tālāk izveidosim ietinamo
failu:
!/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" "$@"
Šeit tas ir vienkārši - Bash
skripts. Iestatiet ceļus fontiem un norādiet programmai, kur meklēt bibliotēkas, lai libnote.
so
un libffmpeg.so
tiktu veiksmīgi atrastas. Un pēdējā rindiņā sākas simplenote
.
Nākamā lieta, kas atlikušas, ir padarīt šo failu izpildāmu:
$ chmod +x wrapper
Lai sāktu paketes izveidi, palaidiet:
$ snapcraft
Pēc tam, kad apkopošana ir pabeigta, varat instalēt pakotni:
$ sudo snap install simplenote_1.0.1_amd64.snap
Programmas palaišanai varat izmantot parasto komandu:
$ simplenote
Tagad programma ir instalēta. Tieši tādu pašu pakešu
izveides metodi varat izmantot, lai pakotētu savas programmas.