Снеп је технологија коју је развио Каноникал како би олакшао инсталирање софтвера у Убунту дистрибуцији. То је релативно нова технологија. Снеп је у развоју већ неколико година, али тек са објављивањем Убунтуа 16.04 појавио се у стању у којем је био спреман за употребу од стране обичних корисника.
Главна предност Snap-а је могућност инсталирања програма без зависности. Све потребне библиотеке су већ у пакету са програмом и од система није потребно ништа да би се покренуо. Приликом ажурирања, кориснику је потребно да ажурира само један snap пакет без прављења измена у систему, а у случају кварова и грешака, пакет се може вратити на претходну верзију. На интернету се често могу наићи на спорове међу корисницима о томе да ли је snap технологија заиста добра или је треба напустити у корист deb
пакета. Али време и тестирање ће показати. Даље у овом чланку, размотрићемо процес креирања snap
пакета. Њихово креирање је мало лакше него истих deb
пакета.
За креирање snap
пакета, користићемо посебан алат - Snapcraft. Ово је званични алат за креирање Snap пакета, који омогућава програмеру да пакује програме како би сакупио потребне датотеке у целом систему. Snapcraft омогућава не само копирање датотека, већ и преузимање изворног кода и изградњу програма.
Затим ћемо погледати како се креирају snap
пакети користећи апликацију Samplenote као пример.
Прво, инсталирајте Snapcraft. Да бисте добили најновију верзију, додајте PPA на наш систем:
$ sudo add-apt-repository ppa:snappy-dev/tools
Сада ажурирајмо листу пакета и инсталирајмо програм:
$ sudo apt-get update $ sudo apt-get install snapcraft
Када је инсталација Snapcraft-а завршена, можете прећи на преузимање изворног кода програма. Прво, преузмите изворни код са GitHub-а и распакујте га:
$ 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
Пошто програм не треба компајлирати, наш задатак је мало лакши. Идемо у фолдер програма и тамо иницијализујемо окружење за изградњу Snapcraft-а:
$ cd Simplenote-linux-x64 $ snapcraft init
Након извршавања последње команде, у фолдеру ће се појавити датотека snapcraft.yml
. Уређивањем датотеке конфигурисаћемо процес креирања нашег snap пакета. Биће нам потребна датотека са следећим садржајем:
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
Прва четири реда садрже информације о самом пакету, назив програма, верзију и кратак и потпун опис.
Команда је команда за покретање програма, затим ћемо користити warpper
скрипту, јер треба да наведемо додатне променљиве окружења.
plugs
су интерфејси које програм може да користи. Ствар је у томе што Snap програми раде у изолованом окружењу, одакле не могу да приступе опреми и личним подацима. Да би наш програм нормално радио, потребно му је дати приступ opengl
, unity7
и network
интерфејсима.
Можете видети доступне интерфејсе и програме који их користе покретањем команде:
$ snap interfaces
У одељку parts
) потребно је да наведете програмске датотеке. Да будем прецизан, то је оно што snapcraft
треба да уради приликом креирања пакета. Пошто не морамо ништа да компајлирамо, користићемо додатак за копирање да бисмо копирали датотеке. Датотеке које треба копирати су наведене у одељку files
. Тамо се не налазе само извршне датотеке, већ и све потребне библиотеке, тако да ће програм добити све потребне компоненте.
Формат снимања је следећи:
system_file: snap_package_file_path
Постоји један нестандардни унос:
resources*: resources
Џокер *
вам омогућава да копирате цео директоријум. Да бисте избегли копирање свих датотека са система, можете користити одељак site-packages да бисте програму рекли који пакети треба да буду инсталирани у snap пакету, у нашем случају libnss3
, fontconfig-config
и gnome-themes-standard
.
Да бисте видели које библиотеке програм користи, можете користити команду:
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)
Важно је да се ове библиотеке испоручују са програмом и стога их треба регистровати у конфигурационом фајлу snapcraft.yaml
. Све остале библиотеке су доступне у систему и snapcraft
аутоматски детектовати.
Затим, хајде да креирамо wrapper
датотеку:
!/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" "$@"
Све је овде једноставно - Bash
скрипта. Постављамо путање за фонтове и кажемо програму где да тражи библиотеке како би libnote.so
и libffmpeg.so
биле успешно пронађене. А последња линија покреће simplenote
за извршавање.
Сада је све што преостаје да се ова датотека учини извршном:
$ chmod +x wrapper
Да бисте започели изградњу пакета, покрените:
$ snapcraft
Изградња може потрајати неко време, а када се заврши, моћи ћете да инсталирате пакет:
$ sudo snap install simplenote_1.0.1_amd64.snap
Да бисте покренули програм, можете користити уобичајену команду:
$ simplenote
Сада је програм инсталиран. Можете користити потпуно исти метод креирања snap
пакета за паковање ваших апликација.