Một nhánh ổn định mới của Flatpak 1.14 đã được phát hành, cung cấp một hệ thống để xây dựng các gói độc lập không bị ràng buộc với các bản phân phối cụ thể. Linux và được thực thi trong một vùng chứa đặc biệt, cách ly ứng dụng khỏi phần còn lại của hệ thống. Hỗ trợ chạy các gói Flatpak được cung cấp cho Arch. Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Bạc hà, Alt Linux и UbuntuCác gói Flatpak được bao gồm trong kho lưu trữ Fedora và được hỗ trợ trong trình quản lý ứng dụng GNOME tiêu chuẩn.
Những cải tiến chính trong nhánh Flatpak 1.14:
- Có thể tạo một thư mục cho các tệp ở trạng thái (.local/state) và đặt biến môi trường XDG_STATE_HOME trỏ đến thư mục này.
- Đã thêm các kiểm tra có điều kiện có dạng “have-kernel-module-name” để xác định sự hiện diện của các mô-đun hạt nhân (một dạng tương tự phổ biến của kiểm tra has-intel-gpu được đề xuất trước đó, thay vào đó là biểu thức “have-kernel-module-i915 ” bây giờ có thể được sử dụng).
- Lệnh “flatpak document-unexport —doc-id=…” đã được triển khai.
- Xuất siêu dữ liệu Appstream để sử dụng trong môi trường chính được cung cấp.
- Đã thêm quy tắc hoàn thành lệnh Flatpak cho vỏ Cá
- Cho phép truy cập mạng vào các dịch vụ X11 và PulseAudio (nếu thêm cài đặt thích hợp).
- Nhánh chính trong kho Git đã được đổi tên từ “master” thành “main”, vì từ “master” gần đây bị coi là không chính xác về mặt chính trị.
- Các tập lệnh khởi chạy hiện được viết lại nếu ứng dụng được đổi tên.
- Đã thêm tùy chọn "--include-sdk" và "--include-debug" vào lệnh cài đặt để cài đặt tệp SDK và debuginfo.
- Đã thêm hỗ trợ cho tham số “DeploySideloadCollectionID” vào các tệp Flatpakref và Flatpakrepo. Khi được đặt, ID bộ sưu tập sẽ được đặt khi thêm kho lưu trữ từ xa chứ không phải sau khi tải siêu dữ liệu.
- Cho phép tạo môi trường hộp cát lồng nhau cho các trình xử lý trong các phiên có tên MPRIS (Đặc tả giao diện từ xa của Media Player) riêng biệt.
- Các tiện ích dòng lệnh hiện cung cấp thông tin về việc sử dụng các tiện ích mở rộng thời gian chạy đã lỗi thời.
- Lệnh gỡ cài đặt thực hiện yêu cầu xác nhận trước khi xóa thời gian chạy hoặc tiện ích mở rộng thời gian chạy vẫn đang được sử dụng.
- Đã thêm hỗ trợ cho tùy chọn “--socket=gpg-agent” cho các lệnh như “flatpak run”.
- Một lỗ hổng đã được sửa trong libostree có khả năng cho phép người dùng xóa các tệp tùy ý trên hệ thống thông qua thao tác của trình xử lý trợ giúp hệ thống Flatpak (gửi yêu cầu xóa với tên nhánh được định dạng đặc biệt). Sự cố chỉ xuất hiện ở các phiên bản Flatpak và libostree cũ hơn được phát hành trước năm 2018 (< 0.10.2) và không ảnh hưởng đến các bản phát hành hiện tại.
Để nhắc lại, Flatpak cho phép các nhà phát triển ứng dụng đơn giản hóa việc phân phối các chương trình của họ mà không có trong các kho lưu trữ phân phối tiêu chuẩn bằng cách tạo ra một container duy nhất, phổ quát mà không cần tạo các bản dựng riêng biệt cho mỗi bản phân phối. Đối với người dùng quan tâm đến bảo mật, Flatpak cho phép họ chạy một ứng dụng đáng ngờ trong một container, chỉ cấp quyền truy cập vào các chức năng mạng và tệp người dùng liên kết với ứng dụng đó. Đối với người dùng quan tâm đến các bản phát hành mới, Flatpak cho phép họ cài đặt các bản phát hành thử nghiệm và ổn định mới nhất của ứng dụng mà không cần thực hiện bất kỳ thay đổi nào đối với hệ thống. Ví dụ, các gói Flatpak được xây dựng cho LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype và Telegram Desktop. Android Phòng thu, v.v.
Để giảm kích thước gói, nó chỉ bao gồm các phần phụ thuộc dành riêng cho ứng dụng, đồng thời các thư viện đồ họa và hệ thống cơ bản (thư viện GTK, Qt, GNOME và KDE, v.v.) được thiết kế dưới dạng môi trường thời gian chạy tiêu chuẩn bổ trợ. Sự khác biệt chính giữa Flatpak và Snap là Snap sử dụng các thành phần của môi trường hệ thống chính và sự cô lập dựa trên các cuộc gọi hệ thống lọc, trong khi Flatpak tạo một vùng chứa tách biệt với hệ thống và hoạt động với các bộ thời gian chạy lớn, không cung cấp các gói dưới dạng phụ thuộc mà là tiêu chuẩn. những môi trường hệ thống đó (ví dụ: tất cả các thư viện cần thiết cho hoạt động của các chương trình Gnome hoặc KDE).
Ngoài môi trường hệ thống tiêu chuẩn (thời gian chạy), được cài đặt thông qua một kho lưu trữ đặc biệt, các phần phụ thuộc (gói) bổ sung cần thiết cho hoạt động của ứng dụng cũng được cung cấp. Tổng cộng, thời gian chạy và gói tạo thành việc lấp đầy vùng chứa, mặc dù thực tế là thời gian chạy được cài đặt riêng biệt và gắn với nhiều vùng chứa cùng một lúc, điều này cho phép bạn tránh sao chép các tệp hệ thống chung cho vùng chứa. Một hệ thống có thể được cài đặt nhiều thời gian chạy khác nhau (GNOME, KDE) hoặc nhiều phiên bản của cùng một thời gian chạy (GNOME 3.40, GNOME 3.42). Một vùng chứa có ứng dụng làm phần phụ thuộc chỉ sử dụng liên kết với một thời gian chạy cụ thể mà không tính đến các gói riêng lẻ tạo nên thời gian chạy. Tất cả các yếu tố còn thiếu được đóng gói trực tiếp với ứng dụng. Khi một vùng chứa được hình thành, nội dung thời gian chạy sẽ được gắn dưới dạng phân vùng /usr và gói được gắn vào thư mục /app.
Bộ chứa thời gian chạy và ứng dụng được xây dựng bằng công nghệ OSTree, trong đó hình ảnh được cập nhật nguyên tử từ kho lưu trữ giống Git, cho phép áp dụng các phương pháp kiểm soát phiên bản cho các thành phần phân phối (ví dụ: bạn có thể nhanh chóng khôi phục hệ thống về trạng thái cũ). trạng thái trước đó). Các gói RPM được dịch sang kho lưu trữ OSTree bằng cách sử dụng lớp RPM-ostree đặc biệt. Không hỗ trợ cài đặt và cập nhật riêng biệt các gói trong môi trường làm việc; hệ thống được cập nhật không phải ở cấp độ các thành phần riêng lẻ mà là toàn bộ, thay đổi trạng thái của nó một cách nguyên tử. Cung cấp các công cụ để áp dụng các bản cập nhật tăng dần, loại bỏ nhu cầu thay thế hoàn toàn hình ảnh sau mỗi bản cập nhật.
Môi trường biệt lập được tạo ra hoàn toàn độc lập với bản phân phối được sử dụng và với cài đặt gói phù hợp, không có quyền truy cập vào các tệp và quy trình của người dùng hoặc hệ thống chính và không thể truy cập trực tiếp vào thiết bị, ngoại trừ đầu ra qua DRI và các cuộc gọi tới hệ thống con của mạng. Tổ chức đầu vào và đầu ra đồ họa được triển khai bằng giao thức Wayland hoặc thông qua chuyển tiếp ổ cắm X11. Tương tác với môi trường bên ngoài dựa trên hệ thống nhắn tin DBus và API Cổng thông tin đặc biệt.
Để cách nhiệt, sử dụng lớp màng bong bóng và vật liệu truyền thống. Linux Các công nghệ ảo hóa container dựa trên việc sử dụng cgroups, namespaces, Seccomp và SE.LinuxPulseAudio được sử dụng để xuất âm thanh. Chế độ bảo mật (sandboxing) có thể bị vô hiệu hóa, chế độ này được các nhà phát triển của nhiều gói phần mềm phổ biến sử dụng để có quyền truy cập đầy đủ vào hệ thống tệp và tất cả các thiết bị trong hệ thống. Ví dụ, GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity và VLC được cung cấp kèm theo chế độ bảo mật hạn chế cho phép truy cập đầy đủ vào thư mục chính. Nếu các gói có quyền truy cập vào thư mục chính bị xâm phạm, bất chấp thẻ "sandboxed" trong mô tả gói, kẻ tấn công chỉ cần sửa đổi tệp ~/.bashrc để thực thi mã của chúng. Một vấn đề khác là quyền kiểm soát các thay đổi đối với các gói và sự tin tưởng vào người duy trì gói, những người thường không liên kết với dự án chính hoặc các bản phân phối.
Nguồn: opennet.ru
