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, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio ж.

Пакеттин көлөмүн азайтуу үчүн, ал колдонмого тиешелүү көз карандылыктарды гана камтыйт жана негизги система жана графикалык китепканалар (GTK, Qt, GNOME жана KDE китепканалары ж.б.) плагиндин стандарттык иштөө убактысынын чөйрөлөрү катары иштелип чыккан. Flatpak менен Snap ортосундагы негизги айырма, Snap тутумдун негизги чөйрөсүнүн компоненттерин жана тутум чалууларын чыпкалоонун негизинде изоляцияны колдонот, ал эми Flatpak системадан өзүнчө контейнер түзүп, пакеттерди көз карандылык катары эмес, стандарттуу камсыз кылуучу чоң иштөө убакыты менен иштейт. системалык чөйрөлөр (мисалы, GNOME же KDE программаларынын иштеши үчүн зарыл болгон бардык китепканалар).

Атайын репозиторий аркылуу орнотулган стандарттык система чөйрөсүнөн (иштөө убактысынан) тышкары, тиркеменин иштеши үчүн зарыл болгон кошумча көз карандылыктар (топтом) берилет. Иштөө убактысы өзүнчө орнотулганына жана бир эле учурда бир нече контейнерге байланганына карабастан, жалпысынан иштөө убактысы жана таңгагы контейнерди толтурууну түзөт, бул контейнерлер үчүн жалпы тутумдук файлдарды кайталоону болтурбоого мүмкүндүк берет. Бир системада орнотулган бир нече башка иштөө убакыттары (GNOME, KDE) же бир эле иштөө убакытынын бир нече версиялары (GNOME 3.40, GNOME 3.42) болушу мүмкүн. Көз карандылык катары тиркемени камтыган контейнер аткаруу убактысын түзгөн жеке пакеттерди эсепке албастан, белгилүү бир иштөө убактысына гана байланыштырат. Бардык жетишпеген элементтер тиркеме менен түздөн-түз пакеттелген. Контейнер түзүлгөндө, иштөө убакытынын мазмуну /usr бөлүмү катары орнотулат, ал эми таңгак /app каталогуна орнотулат.

Иштөө убактысы жана колдонмо контейнерлери OSTree технологиясын колдонуу менен курулган, мында сүрөт Git сыяктуу репозиторийден атомдук түрдө жаңыртылат, бул версияны башкаруу ыкмаларын бөлүштүрүү компоненттерине колдонууга мүмкүндүк берет (мисалы, сиз системаны тез эле артка жылдыра аласыз. мурунку абалы). RPM пакеттери OSTree репозиторийине атайын rpm-ostree катмарын колдонуу менен которулат. Жумушчу чөйрөдө пакеттерди өзүнчө орнотуу жана жаңыртуу колдоого алынбайт, система жеке компоненттердин деңгээлинде эмес, жалпысынан анын абалын атомдук түрдө өзгөртүү менен жаңыланат. Ар бир жаңыртуу менен сүрөттү толугу менен алмаштыруу зарылдыгын жок кылып, жаңыртууларды кадам сайын колдонуу үчүн куралдар менен камсыз кылат.

Түзүлгөн обочолонгон чөйрө колдонулган бөлүштүрүүдөн толугу менен көз каранды эмес жана пакеттин туура орнотуулары менен колдонуучунун же негизги системанын файлдарына жана процесстерине кирүү мүмкүнчүлүгү жок, DRI аркылуу чыгууну кошпогондо, жабдууларга түз кире албайт, жана тармактын подсистемасына чалуулар. Графикалык чыгаруу жана киргизүү уюштуруу Wayland протоколу аркылуу же X11 розетка багыттоо аркылуу ишке ашырылат. Тышкы чөйрө менен өз ара аракеттенүү DBus билдирүү системасына жана атайын Portals API'ге негизделген.

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

Source: opennet.ru

Комментарий кошуу