Maksutavat Abuse

Miten luoda Snap-paketti Ubuntu 16

11.06.2021, 19:26

Snap on Canonicalin kehittämä teknologia, jonka tarkoituksena on helpottaa ohjelmistojen asentamista Ubuntu-jakeluun. Se on suhteellisen tuore kehitys. Snapia kehitettiin useiden vuosien ajan, mutta vasta Ubuntu 16.04:n julkaisussa se ilmestyi tilaan, jossa se on valmis massojen käyttöön.

Snapin tärkein etu on mahdollisuus asentaa ohjelmia ilman riippuvuuksia. Kaikki tarvittavat kirjastot ovat jo valmiiksi paketissa ohjelman mukana, eikä sen suorittaminen vaadi järjestelmältä mitään. Päivitystyössä käyttäjän on päivitettävä yksi Snap-paketti tekemättä muutoksia järjestelmään, ja vikojen ja virheiden sattuessa hän voi palauttaa paketin edelliseen versioon. Internetissä voi usein törmätä käyttäjien väittelyihin siitä, onko snap-tekniikka todella hyvä vai pitäisikö siitä luopua deb-pakettien hyväksi. Aika ja testaaminen tulevat kuitenkin näyttämään sen. Seuraavaksi tässä artikkelissa tarkastelemme snap-pakettien luomisprosessia. Niiden luominen on hieman helpompaa kuin vastaavien deb-pakettien.

Snap-pakettien luominen Ubuntu 16.04:ssä

Snap-pakettien luomiseen käytämme erityistä työkalua nimeltä Snapcraft. Tämä on virallinen työkalu snap-pakettien luomiseen, jonka avulla kehittäjä voi paketoida ohjelmia, jotta tarvittavat tiedostot voidaan rakentaa koko järjestelmään. Snapcraftin avulla voit tiedostojen kopioinnin lisäksi myös ladata lähdekoodin ja rakentaa ohjelman.

Seuraavaksi katsotaan, miten luodaan snap-paketteja käyttäen esimerkkinä Samplenote-sovellusta.

Asenna ensin Snapcraft. Saadaksesi uusimman version lisää PPA järjestelmäämme:

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

Päivitä nyt pakettiluettelo ja asenna ohjelma:

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

Kun Snapcraftin asennus on valmis, voimme siirtyä hakemaan ohjelman lähdekoodia. Lataa ensin lähteet GitHubista ja pura ne:

$ 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

Koska ohjelmaa ei tarvitse kääntää, tehtävämme on hieman helpompi. Siirry kansioon, jossa ohjelma on, ja aloita siellä Snapcraftin build-ympäristö:

$ cd Simplenote-linux-x64
$ snapcraft init

Viimeisen komennon suorittamisen jälkeen kansioon ilmestyy snapcraft.yml-tiedosto. Muokkaamalla tiedostoa konfiguroidaan snap-pakettimme luomisprosessi. Tarvitsemme tiedoston, jonka sisältö on seuraava:

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

Neljä ensimmäistä riviä ovat tiedot itse paketista, ohjelman nimi, versio sekä lyhyt ja täydellinen kuvaus.

Komento - tämä on komento, jolla ohjelma käynnistetään, edelleen käytämme skriptisoturia, koska meidän on määritettävä ylimääräisiä ympäristömuuttujia.

Plugs - nämä ovat rajapinnat, joita ohjelma voi käyttää. Tarkoituksena on, että snap-ohjelmat toimivat eristetyssä ympäristössä, josta ne eivät pääse käsiksi laitteistoon ja henkilökohtaisiin tietoihin. Jotta ohjelmamme toimisi kunnolla, sen on annettava pääsy opengl-, unity7- ja verkkoliitäntöihin.

Näet käytettävissä olevat rajapinnat ja niitä käyttävät ohjelmat suorittamalla komennon:

$ snap interfaces

Osat-kohdassa sinun on määritettävä ohjelmatiedostot. Tarkemmin sanottuna se, mitä snapcraftin on tehtävä pakettia luodessaan. Koska meidän ei tarvitse kääntää mitään, käytämme copy-lisäosaa tiedostojen kopioimiseen. Kopioitavat tiedostot on lueteltu tiedostot-osiossa. Siellä on suoritettavien tiedostojen lisäksi myös kaikki tarvittavat kirjastot, joten ohjelma saa kaikki tarvitsemansa komponentit.

Merkinnän muoto on seuraava:

system_file: snap_package_file_path

On yksi epätyypillinen merkintä:

resources*: resources

Jokerimerkin * avulla voit kopioida koko hakemiston. Jotta vältyttäisiin kaikkien tiedostojen kopioimiselta järjestelmästä, site-packages-osiossa on mahdollisuus kertoa ohjelmalle, mitkä paketit asennetaan snap-paketissa, meidän tapauksessamme ne ovat libnss3, fontconfig-config-config ja gnome-themes-standard.

Jos haluat nähdä, mitä kirjastoja ohjelma käyttää, voit käyttää komentoa:

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)

Tärkeää on, että nämä kirjastot toimitetaan ohjelman mukana, joten meidän on määritettävä ne snapcraft.yaml-konfiguraatiotiedostossa. Kaikki muut kirjastot ovat saatavilla järjestelmässä, ja snapcraft havaitsee ne automaattisesti.

Seuraavaksi luodaan wrapper-tiedosto:

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

Tämä on tässä yksinkertaista - Bash-skripti. Aseta fonttien polut ja kerro ohjelmalle, mistä kirjastoja pitää etsiä, jotta libnote.so ja libffmpeg. so löytyvät onnistuneesti. Ja viimeisellä rivillä käynnistetään simplenote.

Seuraavaksi jäljellä on tehdä tiedostosta suoritettava:

$ chmod +x wrapper

Aloita paketin rakentaminen suorittamalla:

$ snapcraft

Rakentaminen voi kestää jonkin aikaa, ja kun rakentaminen on valmis, voit asentaa paketin:

$ sudo snap install simplenote_1.0.1_amd64.snap

Voit käyttää tavallista komentoa ohjelman suorittamiseen:

$ simplenote

Nyt ohjelma on asennettu. Voit käyttää täsmälleen samaa snap-pakettien luontimenetelmää sovellusten paketoimiseen.