Рэліз сістэмы самадастатковых пакетаў Flatpak 1.14.0

Апублікавана новая стабільная галінка інструментара Flatpak 1.14, які дае сістэму для зборкі самадастатковых пакетаў, не прывязаных да канкрэтных дыстрыбутываў Linux і выкананых у спецыяльным кантэйнеры, ізалявалым прыкладанне ад астатняй сістэмы. Падтрымка выканання Flatpak-пакетаў забяспечана для Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux і Ubuntu. Пакеты з Flatpak уключаны ў рэпазітар Fedora і падтрымліваюцца ў штатнай праграме кіравання прыкладаннямі GNOME.

Ключавыя навіны ў галінцы Flatpak 1.14:

  • Забяспечана стварэнне каталога для файлаў у станам (.local/state) і выстаўленне паказвалай на гэты каталог зменнай асяроддзі XDG_STATE_HOME.
  • Дададзеныя ўмоўныя праверкі выгляду "have-kernel-module-імя" для вызначэння наяўнасці модуляў ядра (універсальны аналог раней прапанаванай праверцы have-intel-gpu, замест якой зараз можна выкарыстоўваць выраз "have-kernel-module-i915").
  • Рэалізавана каманда "flatpak document-unexport -doc-id=…".
  • Забяспечаны экспарт метададзеных Appstream для выкарыстання ў асноўным асяроддзі.
  • Дададзеныя правілы аўтадапаўнення каманд flatpak для каманднай абалонкі Fish
  • Дазволены сеткавы доступ да сэрвісаў X11 і PulseAudio (пры даданні адпаведных налад).
  • Асноўная галіна ў Git-рэпазітары перайменавана з "master" на "main", бо слова "master" лічыцца апошнім часам непаліткарэктным.
  • Забяспечаны перазапіс скрыптоў запуску ў выпадку перайменавання прыкладання.
  • У каманду install дададзены опцыі "-include-sdk" і "-include-debug" для ўсталёўкі SDK і файлаў debuginfo.
  • У файлы flatpakref і flatpakrepo дададзена падтрымка параметра «DeploySideloadCollectionID», пры ўсталёўцы якога ідэнтыфікатар калекцыі будзе выстаўлены падчас дадання выдаленага рэпазітара, а не пасля загрузкі метададзеных.
  • Дазволена стварэнне ўкладзеных sandbox-акружэнняў для апрацоўшчыкаў у сеансах з асобнымі імёнамі MPRIS (Media Player Remote Interfacing Specification).
  • Ва ўтылітах каманднага радка забяспечаны выснова звестак аб выкарыстанні састарэлых runtime-пашырэнняў.
  • У камандзе uninstall рэалізаваны запыт пацверджання перад выдаленнем runtime ці runtime-пашырэнняў, якія яшчэ выкарыстоўваюцца.
  • У каманды падобныя "flatpak run" дададзена падтрымка опцыі "-socket=gpg-agent".
  • У libostree ухіленая ўразлівасць, патэнцыйна якая дазваляе карыстачу выдаліць адвольныя файлы ў сістэме праз маніпуляцыі з апрацоўшчыкам flatpak-system-helper (адпраўцы запыту на выдаленне са адмыслова аформленым імем галінкі). Праблема праяўляецца толькі ў старых версіях Flatpak і libostree, выпушчаных да 2018 года (<0.10.2), і не закранае актуальныя выпускі.

Нагадаем, што распрацоўнікам прыкладанняў Flatpak дае магчымасць спрасціць распаўсюджванне сваіх праграм, якія не ўваходзяць у штатныя рэпазітары дыстрыбутываў за кошт падрыхтоўкі аднаго ўніверсальнага кантэйнера без фарміравання асобных зборак для кожнага дыстрыбутыва. Карыстачам, якія клапоцяцца аб бяспецы, Flatpak дазваляе выканаць выклікае сумнеў прыкладанне ў кантэйнеры, падаўшы доступ толькі да сеткавых функцый і файлаў карыстальніка, звязаным з дадаткам. Карыстачам, якія цікавяцца навінкамі, Flatpak дазваляе ўсталяваць самыя свежыя тэставыя і стабільныя выпускі прыкладанняў без неабходнасці занясення змен у сістэму. Напрыклад, Flatpak-пакеты збіраюцца для LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio і г.д.

Для памяншэння памеру пакета ён уключае толькі спецыфічныя для прыкладання залежнасці, а базавыя сістэмныя і графічныя бібліятэкі (GTK, Qt, бібліятэкі GNOME і KDE і да т.п.) аформлены ў выглядзе якія падключаюцца тыпавых runtime-акружэнняў. Ключавое адрозненне Flatpak ад Snap заключаецца ў тым, што Snap выкарыстоўвае кампаненты асяроддзя асноўнай сістэмы і ізаляцыю на аснове фільтрацыі сістэмных выклікаў, у той час як Flatpak стварае асобны ад сістэмы кантэйнер і аперуе буйнымі runtime-наборамі, падаючы ў якасці залежнасцяў не пакеты, а тыпавыя. сістэмныя асяроддзі (напрыклад, усе бібліятэкі, неабходныя для працы праграм GNOME або KDE).

Апроч тыпавога сістэмнага асяроддзя (runtime), усталёўванага праз адмысловы рэпазітар, пастаўляюцца дадатковыя залежнасці (bundle), патрабаваныя для працы прыкладання. У суме runtime і bundle утвораць начынне кантэйнера, пры тым, што runtime усталёўваецца асобна і прывязваецца адразу да некалькіх кантэйнераў, што дазваляе абыйсціся без дублявання агульных для кантэйнераў сістэмных файлаў. У адной сістэме можа быць усталявана некалькі розных runtime (GNOME, KDE) ці некалькі версій аднаго runtime (GNOME 3.40, GNOME 3.42). Кантэйнер з дадаткам у якасці залежнасці выкарыстоўвае прывязку толькі да вызначанага runtime, без уліку асобных пакетаў, з якіх складаецца runtime. Усе адсутнічаюць элементы пакуюцца непасрэдна разам з дадаткам. Пры фармаванні кантэйнера змесціва runtime мантуецца як частка /usr, а bundle мантуецца ў дырэкторыю /app.

Начынне runtime і кантэйнераў прыкладанняў фармуецца з выкарыстаннем тэхналогіі OSTree, пры якой выява атамарна абнаўляецца з Git-падобнага сховішча, які дазваляе ўжываць метады версійнага кантролю да кампанентаў дыстрыбутыва (напрыклад, можна хутка адкаціць сістэму да мінулага стану). RPM-пакеты транслююцца ў рэпазітар OSTree пры дапамозе спецыяльнай праслойкі rpm-ostree. Асобная ўсталёўка і абнаўленне пакетаў усярэдзіне працоўнага асяроддзя не падтрымліваецца, сістэма абнаўляецца не на ўзроўні асобных кампанентаў, а цалкам, атамарна змяняючы свой стан. Прадстаўляюцца сродкі для інкрыментальнага прымянення абнаўленняў, якія пазбаўляюць ад неабходнасці поўнай замены выявы пры кожным абнаўленні.

Фарміраванае ізаляванае асяроддзе цалкам незалежна ад выкарыстоўванага дыстрыбутыва і пры належных наладах пакета не мае доступу да файлаў і працэсам карыстача ці асноўнай сістэмы, не можа напроста звяртацца да абсталявання, за выключэннем высновы праз DRI, і зваротаў да сеткавай падсістэмы. Выснова графікі і арганізацыя ўводу рэалізаваны пры дапамозе пратакола Wayland або праз пракід сокета X11. Узаемадзеянне з навакольным асяроддзем пабудавана на аснове сістэмы абмену паведамленнямі DBus і спецыяльнага API Portals.

Для ізаляцыі выкарыстоўваецца праслойка Bubblewrap і традыцыйныя для Linux тэхналогіі кантэйнернай віртуалізацыі, заснаваныя на выкарыстанні cgroups, прастор імёнаў (namespaces), Seccomp і SELinux. Для вываду гуку прымяняецца PulseAudio. Пры гэтым ізаляцыя можа быць адключаная, чым карыстаюцца распрацоўнікі шматлікіх папулярных пакетаў для атрымання поўнага доступу да ФС і ўсім прыладам у сістэме. Напрыклад, з абмежаваным рэжымам ізаляцыі, якія пакідаюць поўны доступ да хатняга каталога, пастаўляюцца пакеты GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity і VLC. У выпадку кампраметацыі пакетаў з доступам да хатняга каталога, нягледзячы на ​​наяўнасць у апісанні пакета пазнакі «sandboxed», які атакуе для выканання свайго кода досыць змяніць файл ~/.bashrc. Асобным пытаннем з'яўляецца кантроль за занясеннем змен у пакеты і давер да зборшчыкаў пакетаў, якія часта не злучаны з асноўным праектам або дыстрыбутывамі.

Крыніца: opennet.ru

Дадаць каментар