Snap — Ubuntu дистрибутивінде бағдарламалық құралды орнатуды жеңілдету үшін Canonical әзірлеген технология. Бұл салыстырмалы түрде жаңа технология. Snap бірнеше жыл бойы әзірленуде, бірақ Ubuntu 16.04 шығарылымымен ғана ол жалпы пайдаланушының пайдалануына дайын күйде пайда болды.
Snap-тің басты артықшылығы - бағдарламаларды тәуелділіксіз орнату мүмкіндігі. Барлық қажетті кітапханалар бағдарламамен бірге пакетте бар және оны іске қосу үшін жүйеден ештеңе талап етілмейді. Жаңарту кезінде пайдаланушы жүйеге өзгертулер енгізбестен тек бір жедел пакетті жаңартуы керек, ал қателер мен қателер болған жағдайда пакетті алдыңғы нұсқаға қайтаруға болады. Интернетте сіз пайдаланушылар арасында snap технологиясы шынымен жақсы ма немесе оны deb
пакеттерінің пайдасына бас тарту керек пе деген дауларға жиі ұшырайсыз. Бірақ оны уақыт пен сынақ көрсетеді. Әрі қарай осы мақалада біз snap
пакеттерді жасау процесін қарастырамыз. Оларды жасау бірдей deb
пакеттеріне қарағанда біршама оңайырақ.
snap
пакеттерін жасау үшін біз арнайы құралды қолданамыз - Snapcraft. Бұл әзірлеушіге жүйеде қажетті файлдарды жинау үшін бағдарламаларды жинақтауға мүмкіндік беретін жедел пакеттерді жасауға арналған ресми құрал. Snapcraft файлдарды көшіруге ғана емес, сонымен қатар дереккөздерді жүктеп алуға және бағдарлама құруға мүмкіндік береді.
Әрі қарай, мысал ретінде Samplenote қолданбасын пайдаланып, snap
пакеттерді қалай жасау керектігін қарастырамыз.
Алдымен 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
- бұл бағдарлама пайдалана алатын интерфейстер. Мәселе мынада, жедел бағдарламалар оқшауланған ортада жұмыс істейді, олар жабдық пен жеке деректерге қол жеткізе алмайды. Бағдарламамыз қалыпты жұмыс істеуі үшін оған opengl
, unity7
және network
интерфейстерге рұқсат беру керек.
Қол жетімді интерфейстер мен оларды пайдаланатын бағдарламаларды пәрменді орындау арқылы көруге болады:
$ snap interfaces
parts
бөлімінде бағдарлама файлдарын көрсету керек. Дәлірек айтсақ, пакетті жасау кезінде snapcraft
мұны істеуі керек. Бізге ештеңе құрастырудың қажеті жоқ болғандықтан, файлдарды көшіру үшін көшіру плагинін қолданамыз. Көшіру қажет файлдар files
бөлімінде берілген. Онда тек орындалатын файлдар ғана емес, сонымен қатар барлық қажетті кітапханалар бар, сондықтан бағдарлама барлық қажетті компоненттерді алады.
Жазу форматы келесідей:
system_file: snap_package_file_path
Бір стандартты емес жазба бар:
resources*: resources
Қойылмалы таңба *
бүкіл каталогты көшіруге мүмкіндік береді. Жүйеден барлық файлдарды көшірмеу үшін, бағдарламаға 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
бумаларын жасаудың дәл сол әдісін пайдалануға болады.