Mokėjimo būdai Abuse

Kaip sukurti "Snap" paketą Ubuntu 16

11.06.2021, 19:26

"Snap" yra "Canonical" sukurta technologija, skirta palengvinti programinės įrangos diegimą į "Ubuntu" distribuciją. Ji sukurta palyginti neseniai. Snap buvo kuriama kelerius metus, tačiau tik išleidus Ubuntu 16.04 ji tapo tokia, kad ją galima naudoti masiškai.

Pagrindinis Snap privalumas yra galimybė įdiegti programas be priklausomybių. Visos reikalingos bibliotekos jau yra pakete su programa, todėl norint ją paleisti iš sistemos nieko nereikia. Atnaujindamas naudotojas turi atnaujinti vieną Snap paketą, nekeisdamas sistemos, o nesėkmių ir klaidų atveju gali grąžinti paketą į ankstesnę versiją. Internete dažnai galima susidurti su naudotojų ginčais, ar snap technologija iš tikrųjų yra gera, ar jos reikėtų atsisakyti deb paketų naudai. Tačiau tai parodys laikas ir bandymai. Toliau šiame straipsnyje apžvelgsime snap paketų kūrimo procesą. Juos kurti šiek tiek paprasčiau nei tuos pačius deb paketus.

"Snap" paketų kūrimas Ubuntu 16.04

Snap paketams kurti naudosime specialų įrankį, vadinamą Snapcraft. Tai oficiali snap paketų kūrimo priemonė, kuri leidžia kūrėjui kurti paketų programas, kad visoje sistemoje būtų sukurti reikiami failai. Snapcraft leidžia ne tik kopijuoti failus, bet ir atsisiųsti pradinį kodą bei sukurti programą.

Toliau pažiūrėkime, kaip sukurti "snap" paketus, kaip pavyzdį naudodami programą "Samplenote".

Pirmiausia įdiekite "Snapcraft". Norėdami gauti naujausią versiją, į savo sistemą pridėkite PPA:

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

Dabar atnaujinkite paketų sąrašą ir įdiekite programą:

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

Baigę diegti "Snapcraft", galime pereiti prie programos išeities kodo gavimo. Pirmiausia atsisiųskite pradinius šaltinius iš "GitHub" ir išpakuokite juos:

$ 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

Kadangi programos nereikia kompiliuoti, mūsų užduotis šiek tiek lengvesnė. Eikite į aplanką su programa ir inicializuokite jame esančią "Snapcraft" kūrimo aplinką:

$ cd Simplenote-linux-x64
$ snapcraft init

Įvykdžius paskutinę komandą, aplanke atsiras failas snapcraft.yml. Redaguodami šį failą sukonfigūruokime mūsų snap paketo kūrimo procesą. Mums reikės toliau nurodyto turinio failo:

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

Pirmosiose keturiose eilutėse pateikiama informacija apie patį paketą, programos pavadinimas, versija ir trumpas bei išsamus aprašymas.

Komanda - tai komanda, skirta programai paleisti, toliau naudosime skriptų karpytuvą, nes reikia nurodyti papildomus aplinkos kintamuosius.

Įskiepiai - tai sąsajos, kuriomis gali naudotis programa. Esmė ta, kad šnekamosios programos veikia izoliuotoje aplinkoje, iš kurios jos negali gauti prieigos prie techninės įrangos ir asmeninių duomenų. Kad mūsų programa tinkamai veiktų, jai reikia suteikti prieigą prie opengl, unity7 ir tinklo sąsajų.

Galimas sąsajas ir jomis besinaudojančias programas galite pamatyti įvykdę komandą:

$ snap interfaces

Dalys skirsnyje reikia nurodyti programos failus. Konkrečiai, ką turi padaryti "snapcraft", kurdamas paketą. Kadangi mums nieko nereikia kompiliuoti, failams kopijuoti naudojame kopijavimo įskiepį. Failai, kuriuos reikia nukopijuoti, išvardyti failų skyriuje. Čia yra ne tik vykdomieji failai, bet ir visos reikalingos bibliotekos, todėl programa gaus visus jai reikalingus komponentus.

Įrašo formatas yra toks:

system_file: snap_package_file_path

Yra vienas nestandartinis įrašas:

resources*: resources

simbolis * leidžia nukopijuoti visą katalogą. Kad nereikėtų kopijuoti visų failų iš sistemos, skiltyje site-packages yra parinktis, kuria programai nurodoma, kurie paketai turi būti įdiegti į snap paketą, mūsų atveju tai libnss3, fontconfig-config-config ir gnome-themes-standard.

Norėdami pamatyti, kokias bibliotekas naudoja programa, galite naudoti komandą:

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)

Svarbu tai, kad šios bibliotekos tiekiamos kartu su programa, todėl turime jas nurodyti snapcraft.yaml konfigūracijos faile. Visos kitos bibliotekos yra prieinamos sistemoje ir jas snapcraft aptiks automatiškai.

Toliau sukurkime įvyniojimo failą:

!/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" "$@"

Čia viskas paprasta - "Bash" skriptas. Nustatykite šriftų kelius ir nurodykite programai, kur ieškoti bibliotekų, kad libnote. so ir libffmpeg.so būtų sėkmingai surastos. Ir paskutine eilute paleiskite simplenote.

Kitas likęs dalykas - padaryti šį failą vykdytinu:

$ chmod +x wrapper

Norėdami pradėti kurti paketą, paleiskite:

$ snapcraft

Surinkimas gali šiek tiek užtrukti, o kai jis bus baigtas, galėsite įdiegti paketą:

$ sudo snap install simplenote_1.0.1_amd64.snap

Programai paleisti galite naudoti įprastą komandą:

$ simplenote

Dabar programa įdiegta. Lygiai tokį patį paketų kūrimo metodą galite naudoti savo programoms supakuoti.