Flatpak打包(9)——應用分發

全部文章目錄:
Flatpak打包(1)——Flatpak 介紹
Flatpak打包(2)——Flatpak應用元素
Flatpak打包(3)——應用Flatpak
Flatpak打包(4)——構建第一個Flatpak
Flatpak打包(5)——開始配置
Flatpak打包(6)——構建一個簡單的應用
Flatpak打包(7)——Flatpak Builder
Flatpak打包(8)——應用Sandbox(沙盒)
Flatpak打包(9)——應用分發
Flatpak打包(10)——可用運行時(Runtime)
Flatpak打包(11)——命令參考
Flatpak打包(12)——Flatpak-builder命令參考

flatpak提供了多種分發應用程序的方式。主要方法是託管一個存儲庫。這是相對簡單的(雖然有一些重要的細節需要注意),並允許分發應用程序更新。
也可以將flatpaks作爲單個文件包分發,這在某些情況下可能很有用。

託管一個存儲庫

本指南的前幾節介紹如何使用build-exportflatpak-builder生成存儲庫。生成的OSTree存儲庫可以駐留在Web服務器上供用戶使用。

重要細節

OSTree存儲庫使用archive-z2,這意味着它們包含應用程序中每個文件的單個文件。這意味着pull操作將執行大量的HTTP請求。由於新請求很慢,因此在Web服務器上啓用HTTP保持活動很重要。
OSTree支持一種叫做靜態變量的東西。這些是repo中的單個文件,其中包含在兩個修訂之間(或從無到修訂)所需的所有數據。創建這樣的delta會在服務器上佔用更多的空間,但會使下載速度更快。這可以通過build-update-repo --generate-static-deltas選項來完成。

GPG簽名

OSTree使用GPG來驗證存儲庫的身份。這要求對存儲庫的每次提交都使用GPG簽名以及存儲庫摘要文件的修改時間。
要做到這一點,需要將GPG密鑰傳遞給build-update-repobuild-export命令,以及flatpak-builder(如果用於修改或創建存儲庫)。(如果您還沒有GPG密鑰,則很容易生成GPG密鑰)。例如:

$ flatpak build-export --gpg-sign=KEYID --gpg-homedir=PATH REPOSITORY DIRECTORY

這裏--gpg-homedir是可選的,並且允許指定要使用的密鑰的主目錄。
儘管通常不推薦,但可以禁用OSTree存儲庫的GPG驗證。要做到這一點,添加遠程時可以使用--no-gpg-verify選項。GPG驗證也可以在現有的遠程平臺上使用flatpak remote-modify來禁用。
請注意,爲了更新未啓用gpg驗證的遠程設備,必須成爲root用戶

指定存儲庫

將用戶指向包含應用程序的存儲庫的一種便捷方式是提供一個.flatpakrepo文件,供他們下載和安裝。要手動安裝.flatpakrepo文件,請使用以下命令:

$ flatpak remote-add --from foo.flatpakrepo

一個典型的.flatpakrepo文件看起來像這樣:

[Flatpak Repo]
Title=GEdit
Url=http://sdk.gnome.org/repo-apps/
GPGKey=mQENBFUUCGcBCAC/K9WeV4xCaKr3...

如果存儲庫僅包含一個應用程序,則可以更方便地使用.flatpakref文件,該文件包含足夠的信息來添加存儲庫並同時安裝應用程序。要手動安裝.flatpakref文件,請使用以下命令:

$ flatpak install --from foo.flatpakref

典型的.flatpakref文件如下所示:

[Flatpak Ref]
Title=GEdit
Name=org.gnome.gedit
Branch=stable
Url=http://sdk.gnome.org/repo-apps/
IsRuntime=False
GPGKey=mQENBFUUCGcBCAC/K9WeV4xCaKr3...
RuntimeRepo=https://sdk.gnome.org/gnome.flatpakrepo

請注意,這些文件中的GPGKey密鑰包含base64編碼的GPG密鑰,您可以使用以下命令獲得該密鑰:

$ base64 --wrap=0 < foo.gpg

單一文件包

託管存儲庫是分發應用程序的首選方式,但有時可以從網站提供的單個文件包或作爲電子郵件附件發送的更便利。flatpak使用build-bundlebuild-import-bundle命令來支持此操作,以將存儲庫中的應用程序轉換爲捆綁軟件並返回:

$ flatpak build-bundle [OPTION...] LOCATION FILENAME NAME [BRANCH]
$ flatpak build-import-bundle [OPTION...] LOCATION FILENAME

例如,創建一個名爲dictionary.flatpak的軟件包,其中包含 ~/repositories /apps中的存儲庫中的GNOME dictionary應用程序,請運行:

$ flatpak build-bundle ~/repositories/apps dictionary.flatpak org.gnome.Dictionary

要將軟件包導入另一臺機器上的存儲庫,請運行:

$ flatpak build-import-bundle ~/my-apps dictionary.flatpak

注意與存儲庫相比,bundle有一些缺點。例如,使用託管存儲庫分發更新更方便,因爲用戶可以運行flatpak update

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章