Phát hành hệ thống gói độc lập Flatpak 1.14.0

Một nhánh ổn định mới của bộ công cụ Flatpak 1.14 đã được xuất bản, 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 Linux cụ thể và chạy trong một vùng chứa đặc biệt giúp tách biệt ứ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 Mint, Alt Linux và Ubuntu. Các gói Flatpak được bao gồm trong kho Fedora và được hỗ trợ bởi trình quản lý ứng dụng Gnome gốc.

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.

Hãy để chúng tôi nhắc bạn rằng 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ọ không có trong kho phân phối tiêu chuẩn bằng cách chuẩn bị một vùng chứa chung mà không cần tạo các tập hợp riêng biệt cho mỗi bản phân phối. Đối với những người dùng quan tâm đến bảo mật, Flatpak cho phép bạn chạy một ứng dụng có vấn đề trong một vùng chứa, chỉ cung cấp quyền truy cập vào các chức năng mạng và tệp người dùng được liên kết với ứng dụng. Đối với người dùng quan tâm đến sản phẩm mới, Flatpak cho phép bạn cài đặt bản thử nghiệm mới nhất và bản phát hành ổn định của ứng dụng mà không cần thực hiện thay đổi đối với hệ thống. Ví dụ: gói Flatpak được xây dựng cho LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, 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 ly, lớp Bubblewrap và các công nghệ ảo hóa bộ chứa Linux truyền thống được sử dụng, dựa trên việc sử dụng các nhóm, không gian tên, Seccomp và SELinux. PulseAudio được sử dụng để phát ra âm thanh. Trong trường hợp này, tính năng cách ly có thể bị vô hiệu hóa, tính năng này được các nhà phát triển của nhiều gói phổ biến sử dụng để có toàn quyền truy cập 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ó chế độ cách ly giới hạn 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, mặc dù có nhãn “hộp cát” trong mô tả gói, kẻ tấn công chỉ cần thay đổi tệp ~/.bashrc để thực thi mã của mình. Một vấn đề riêng biệt là việc kiểm soát các thay đổi đối với gói và sự tin tưởng vào những người xây dựng gói, những người thường không liên quan đến dự án chính hoặc các bản phân phối.

Nguồn: opennet.ru

Thêm một lời nhận xét