Flatpak 1.14.0 自包含包系統發布

Flatpak 1.14 工具包的一個新的穩定分支已經發布,它提供了一個用於構建獨立包的系統,這些包不依賴於特定的Linux 發行版,並在一個特殊的容器中運行,該容器將應用程序與系統的其餘部分隔離。 為 Arch Linux、CentOS、Debian、Fedora、Gentoo、Mageia、Linux Mint、Alt Linux 和 Ubuntu 提供了對執行 Flatpak 軟體包的支援。 Flatpak 軟體套件包含在 Fedora 儲存庫中,並受到本機 GNOME 應用程式管理員的支援。

Flatpak 1.14 分支的主要創新:

  • 可以為狀態 (.local/state) 中的檔案建立一個目錄,並設定指向該目錄的 XDG_STATE_HOME 環境變數。
  • 新增了“have-kernel-module-name”形式的條件檢查,以確定內核模組是否存在(先前提出的have-intel-gpu 檢查的通用類似物,而不是表達式“have-kernel-module-i915” ) ”現在可以使用)。
  • 指令「flatpak document-unexport —doc-id=...」已實作。
  • 提供 Appstream 元資料的匯出以供主環境使用。
  • 為 Fish shell 新增了 flatpak 指令完成規則
  • 允許對 X11 和 PulseAudio 服務進行網路存取(如果添加了適當的設定)。
  • Git 儲存庫中的主分支已從“master”重命名為“main”,因為“master”一詞最近被認為是政治不正確的。
  • 如果應用程式被重新命名,啟動腳本現在會被重寫。
  • 在安裝指令中新增了「--include-sdk」和「--include-debug」選項來安裝 SDK 和 debuginfo 檔案。
  • 在 flatpakref 和 flatpakrepo 檔案中新增了對「DeploySideloadCollectionID」參數的支援。設定後,集合 ID 將在新增遠端儲存庫時設置,而不是在載入元資料後設定。
  • 允許在具有單獨 MPRIS(媒體播放器遠端介面規格)名稱的會話中為處理程序建立嵌套沙箱環境。
  • 命令列實用程式現在提供有關過時運行時擴充功能的使用資訊。
  • 卸載命令會在刪除仍在使用的執行時間或執行時間擴充之前執行確認請求。
  • 為「flatpak run」等指令新增了對「--socket=gpg-agent」選項的支援。
  • libostree 中已修復一個漏洞,該漏洞可能允許使用者透過操作 flatpak-system-helper 處理程序(發送具有特殊格式的分支名稱的刪除請求)來刪除系統上的任意檔案。 這個問題僅出現在 2018 年之前發布的舊版 Flatpak 和 libostree (< 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 套件使用特殊的 rpm-ostree 層轉換到 OSTree 儲存庫。 不支援在工作環境中單獨安裝和更新軟體包;系統的更新不是在單一元件的級別,而是作為一個整體,原子地改變其狀態。 提供增量應用更新的工具,無需每次更新都完全替換映像。

產生的隔離環境完全獨立於所使用的發行版,並且在包的正確設定下,無法存取用戶或主系統的檔案和進程,無法直接存取設備,除了透過DRI輸出之外,以及對網路子系統的調用。 圖形輸出和輸入組織是使用 Wayland 協定或透過 X11 套接字轉送來實現的。 與外部環境的互動是基於 DBus 訊息系統和特殊的 Portals API。

為了實現隔離,基於 cgroup、命名空間、Seccomp 和 SELinux,使用了 Bubblewrap 圖層和傳統的 Linux 容器虛擬化技術。 PulseAudio用於輸出聲音。 在這種情況下,可以停用隔離,許多流行軟體包的開發人員都使用隔離來獲得對檔案系統和系統中所有裝置的完全存取權。 例如,GIMP、VSCodium、PyCharm、Octave、Inkscape、Audacity 和 VLC 都帶有有限的隔離模式,保留對主目錄的完全存取權。 如果有權存取主目錄的軟體包受到損害,儘管軟體包描述中存在「沙盒」標籤,攻擊者只需更改 ~/.bashrc 檔案即可執行其程式碼。 另一個問題是對套件變更的控制以及對套件建構者的信任,這些建構者通常與主項目或發行版無關。

來源: opennet.ru

添加評論