یک شاخه پایدار جدید از کیت ابزار Flatpak 1.14 منتشر شده است که سیستمی را برای ساخت بسته های مستقل ارائه می دهد که به توزیع های لینوکس خاص متصل نیستند و در یک ظرف خاص اجرا می شوند که برنامه را از بقیه سیستم جدا می کند. پشتیبانی از اجرای بسته های Flatpak برای Arch Linux، CentOS، Debian، Fedora، Gentoo، Mageia، Linux Mint، Alt Linux و Ubuntu ارائه شده است. بسته های Flatpak در مخزن فدورا گنجانده شده اند و توسط مدیر برنامه اصلی GNOME پشتیبانی می شوند.
نوآوری های کلیدی در شعبه Flatpak 1.14:
- امکان ایجاد دایرکتوری برای فایلهای موجود در حالت (.local/state) و تنظیم متغیر محیطی XDG_STATE_HOME که به این دایرکتوری اشاره دارد، وجود دارد.
- بررسیهای مشروط از فرم "نام ماژول-دارای هسته" برای تعیین وجود ماژولهای هسته (یک آنالوگ جهانی از بررسی قبلی پیشنهادی have-intel-gpu، به جای آن عبارت "have-kernel-module-i915" اضافه شده است. ” اکنون قابل استفاده است).
- دستور flatpak document-unexport —doc-id=…» اجرا شده است.
- صادرات فراداده Appstream برای استفاده در محیط اصلی ارائه شده است.
- قوانین تکمیل دستور flatpak برای پوسته ماهی اضافه شده است
- دسترسی شبکه به خدمات X11 و PulseAudio مجاز است (در صورت اضافه شدن تنظیمات مناسب).
- شاخه اصلی در مخزن Git از “master” به “main” تغییر نام داده است، زیرا اخیراً کلمه “master” از نظر سیاسی نادرست در نظر گرفته شده است.
- در صورت تغییر نام برنامه، اسکریپت های راه اندازی اکنون بازنویسی می شوند.
- گزینههای «--include-sdk» و «--include-debug» به دستور install برای نصب فایلهای SDK و اشکالزدایی اضافه شد.
- پشتیبانی از پارامتر "DeploySideloadCollectionID" به فایلهای flatpakref و flatpakrepo اضافه شد. در صورت تنظیم، شناسه مجموعه در هنگام افزودن مخزن راه دور تنظیم میشود و نه پس از بارگیری ابرداده.
- ایجاد محیطهای جعبه ماسهبازی تودرتو برای کنترلکنندهها در جلسات با نامهای جداگانه MPRIS (مشخصات رابط از راه دور پخشکننده رسانه) مجاز است.
- ابزارهای خط فرمان اکنون اطلاعاتی در مورد استفاده از پسوندهای زمان اجرا قدیمی ارائه می دهند.
- دستور Uninstall قبل از حذف زمان اجرا یا پسوندهای زمان اجرا که هنوز در حال استفاده هستند، یک درخواست تأیید را اجرا می کند.
- پشتیبانی از گزینه "--socket=gpg-agent" به دستوراتی مانند "flatpak run" اضافه شده است.
- یک آسیبپذیری در 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 یک کانتینر جدا از سیستم ایجاد میکند و با مجموعههای زمان اجرا بزرگ کار میکند و بستهها را نه به عنوان وابستگی، بلکه استاندارد ارائه میکند. محیط های سیستم ones (به عنوان مثال، تمام کتابخانه های لازم برای عملکرد برنامه های GNOME یا KDE).
علاوه بر محیط استاندارد سیستم (زمان اجرا) که از طریق یک مخزن ویژه نصب شده است، وابستگی های اضافی (بسته) مورد نیاز برای عملکرد برنامه ارائه می شود. در مجموع، زمان اجرا و بسته نرم افزاری پر شدن کانتینر را تشکیل می دهند، علیرغم این واقعیت که زمان اجرا به طور جداگانه نصب می شود و به طور همزمان به چندین کانتینر متصل می شود، که به شما امکان می دهد از تکرار فایل های سیستمی رایج در کانتینرها جلوگیری کنید. یک سیستم میتواند چندین زمان اجرا (GNOME، KDE) یا چندین نسخه از یک زمان اجرا (گنوم 3.40، گنوم 3.42) را نصب کند. یک کانتینر با یک برنامه کاربردی به عنوان یک وابستگی فقط از یک اتصال به یک زمان اجرا خاص استفاده می کند، بدون اینکه بسته های جداگانه ای را که زمان اجرا را تشکیل می دهند در نظر بگیرد. تمام عناصر گم شده مستقیماً با برنامه بسته بندی می شوند. هنگامی که یک کانتینر تشکیل می شود، محتویات زمان اجرا به عنوان پارتیشن usr/ و بسته نرم افزاری در دایرکتوری /app نصب می شود.
زمان اجرا و کانتینرهای برنامه با استفاده از فناوری OSTree ساخته شده اند، که در آن تصویر به صورت اتمی از یک مخزن Git مانند به روز می شود، که اجازه می دهد تا روش های کنترل نسخه بر روی اجزای توزیع اعمال شود (به عنوان مثال، می توانید به سرعت سیستم را به یک مخزن بازگردانید. حالت قبلی). بسته های RPM با استفاده از یک لایه rpm-ostree ویژه به مخزن OSTree ترجمه می شوند. نصب و بهروزرسانی جداگانه بستهها در محیط کار پشتیبانی نمیشود؛ سیستم نه در سطح اجزای جداگانه، بلکه به طور کلی بهروزرسانی میشود و وضعیت خود را به صورت اتمی تغییر میدهد. ابزارهایی را برای اعمال بهروزرسانیها به صورت تدریجی فراهم میکند و نیازی به جایگزینی کامل تصویر با هر بهروزرسانی را از بین میبرد.
محیط ایزوله تولید شده کاملاً مستقل از توزیع مورد استفاده است و با تنظیمات مناسب بسته، به فایل ها و فرآیندهای کاربر یا سیستم اصلی دسترسی ندارد، نمی تواند مستقیماً به تجهیزات دسترسی داشته باشد، به استثنای خروجی از طریق DRI، و با زیرسیستم شبکه تماس می گیرد. خروجی گرافیک و سازماندهی ورودی با استفاده از پروتکل Wayland یا از طریق سوکت X11 Forwarding پیاده سازی می شود. تعامل با محیط خارجی بر اساس سیستم پیام رسانی DBus و یک پورتال API ویژه است.
برای جداسازی، از لایه Bubblewrap و فناوریهای مجازیسازی کانتینر لینوکس سنتی، بر اساس استفاده از cgroups، namespaces، Seccomp و SELinux استفاده میشود. PulseAudio برای خروجی صدا استفاده می شود. در این حالت می توان جداسازی را غیرفعال کرد که توسط توسعه دهندگان بسیاری از بسته های محبوب برای دسترسی کامل به سیستم فایل و تمام دستگاه های موجود در سیستم استفاده می شود. به عنوان مثال، GIMP، VSCodium، PyCharm، Octave، Inkscape، Audacity و VLC با یک حالت انزوا محدود ارائه میشوند که دسترسی کامل به فهرست اصلی را میگذارد. اگر بستههای با دسترسی به فهرست اصلی در معرض خطر قرار گیرند، علیرغم وجود برچسب "sandboxed" در توضیحات بسته، مهاجم فقط باید فایل ~/.bashrc را تغییر دهد تا کد خود را اجرا کند. موضوع جداگانه کنترل تغییرات بسته ها و اعتماد به سازندگان بسته است که اغلب با پروژه یا توزیع های اصلی مرتبط نیستند.
منبع: opennet.ru