Fizetési módok Abuse

Hogyan hozzunk létre egy Snap csomagot Ubuntu 16

11.06.2021, 19:26

A Snap a Canonical által kifejlesztett technológia, amely megkönnyíti a szoftverek telepítését az Ubuntu disztribúcióban. Ez egy viszonylag új keletű fejlesztés. A Snap fejlesztése több éven keresztül zajlott, de csak az Ubuntu 16.04 kiadására jelent meg olyan állapotban, hogy a tömegek számára is használhatóvá vált.

A Snap fő előnye, hogy függőségek nélkül telepíthetünk programokat. Az összes szükséges könyvtár már a programmal együtt a csomagban van, és a futtatásához semmit sem kell a rendszertől elvárni. Frissítéskor a felhasználónak egy Snap csomagot kell frissítenie anélkül, hogy változtatásokat végezne a rendszeren, és hiba és hiba esetén visszaállíthatja a csomagot az előző verzióra. A világhálón gyakran találkozhatunk vitákkal a felhasználók között arról, hogy a snap technológia valóban jó-e, vagy el kellene hagyni a deb csomagok javára. De az idő és a tesztelés majd eldönti. A következő cikkben a snap csomagok létrehozásának folyamatát nézzük meg. Létrehozásuk egy kicsit egyszerűbb, mint ugyanezek a deb csomagoké.

Snap csomagok létrehozása Ubuntu 16.04-ben

A snap csomag ok létrehozásához a Snapcraft nevű speciális eszközt fogjuk használni. Ez a snap csomagok létrehozásának hivatalos eszköze, amely lehetővé teszi a fejlesztő számára a programok csomagolását annak érdekében, hogy a szükséges fájlokat az egész rendszerben összeállítsa. A Snapcraft nem csak a fájlok másolását teszi lehetővé, hanem a forráskód letöltését és a program összeállítását is.

Ezután nézzük meg, hogyan hozhatunk létre snap csomagokat a Samplenote alkalmazás példáján.

Először is telepítsük a Snapcraftot. A legújabb verzióhoz adjunk hozzá egy PPA-t a rendszerünkhöz:

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

Most frissítsük a csomaglistát és telepítsük a programot:

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

Ha a Snapcraft telepítése befejeződött, továbbléphetünk a program forráskódjának megszerzéséhez. Először is töltsük le a forrásokat a GitHubról és csomagoljuk ki őket:

$ 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

Mivel a programot nem kell lefordítani, a feladatunk egy kicsit könnyebb. Menjünk a programot tartalmazó mappába, és ott inicializáljuk a Snapcraft build környezetet:

$ cd Simplenote-linux-x64
$ snapcraft init

Az utolsó parancs végrehajtása után a mappában megjelenik a snapcraft.yml fájl. A fájl szerkesztésével konfiguráljuk a snap csomagunk létrehozásának folyamatát. A következő tartalmú fájlra lesz szükségünk:

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

Az első négy sorban magáról a csomagról van információ, a program neve, a verzió, valamint egy rövid és egy teljes leírás.

Command - ez a program indításának parancsa, a továbbiakban a script warpper-t fogjuk használni, mert további környezeti változókat kell megadnunk.

Plugs - ezek azok az interfészek, amelyeket a program használhat. A lényeg, hogy a snap programok elszigetelt környezetben dolgozzanak, ahonnan nem férhetnek hozzá a hardverhez és a személyes adatokhoz. Ahhoz, hogy a programunk megfelelően működjön, hozzáférést kell adnia az opengl, unity7 és hálózati interfészekhez.

Az elérhető interfészeket és az azokat használó programokat a parancs végrehajtásával láthatjuk:

$ snap interfaces

A részek részben meg kell adnunk a programfájlokat. Konkrétan azt, hogy a snapcraftnak mit kell tennie a csomag létrehozásakor. Mivel nem kell semmit lefordítanunk, a fájlok másolására a copy plugint használjuk. A másolandó fájlokat a fájlok részben soroljuk fel. Nem csak futtatható fájlok vannak, hanem az összes szükséges könyvtár is, így a program megkapja az összes szükséges komponenst.

A bejegyzés formátuma a következő:

system_file: snap_package_file_path

Van egy nem szabványos bejegyzés:

resources*: resources

A * joker karakterrel a teljes könyvtárat másolhatjuk. Hogy ne kelljen az összes fájlt lemásolni a rendszerről, a site-packages részben van egy opció, amivel meg lehet mondani a programnak, hogy mely csomagokat kell telepíteni a snap csomagban, esetünkben ezek a libnss3, a fontconfig-config-config és a gnome-themes-standard.

Ha meg akarod nézni, hogy a program mely könyvtárakat használja, használhatod a parancsot:

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)

A lényeg, hogy ezeket a könyvtárakat a programmal együtt szállítják, ezért a snapcraft.yaml konfigurációs fájlban kell megadnunk őket. Az összes többi könyvtár elérhető a rendszerben, és a snapcraft automatikusan felismeri őket.

Ezután hozzuk létre a wrapper fájlt:

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

Ez itt egyszerű - egy Bash script. Állítsuk be a betűtípusok elérési útvonalait, és mondjuk meg a programnak, hogy hol keresse a könyvtárakat, hogy a libnote.so és libffmpeg.so sikeresen megtalálható legyen. Az utolsó sor pedig elindítja a simplenote-ot.

A következő dolog, ami még hátravan, hogy futtathatóvá tegyük ezt a fájlt:

$ chmod +x wrapper

A csomag összeállításának megkezdéséhez futtassuk le:

$ snapcraft

A build némi időt vehet igénybe, és ha a build befejeződött, akkor telepíthetjük a csomagot:

$ sudo snap install simplenote_1.0.1_amd64.snap

A program futtatásához a szokásos parancsot használhatja:

$ simplenote

Most már telepítve van a program. A snap csomagok létrehozásának pontosan ugyanezt a módszerét használhatja az alkalmazások csomagolására.