# 2023-11-28 主題分享 – Flatpak(Linux軟體套件格式)介紹 ## 活動資訊 - 日期: 2023-11-28 (二) 19:00 ~ 22:00 - 地點: 台北市中正區八德路一段94號3樓(摩茲工寮) - <https://moztw.org/space/> - Google Map: <https://g.page/MozTW?share> - 講者: 潘建宏 StarNight - About: <https://about.me/StarNight> - Github: <https://github.com/starnight> - 注意事項 - 場地無供餐,請自行帶晚餐飲食前來 - 有 WiFi 及電源插座 - 該場地有門禁,活動開始前會有志工到場開門。 - 視情況可聯絡志工遠端開門 - 費用: 無 - 主辦單位 - Hacking Thursday(H4), <https://www.hackingthursday.org> - TOSSUG, <https://tossug.net/> ## 報名資訊 場地可容納人數約 15 ~ 25 人。目前活動設定 15 人座位,候位 3 人。報名活動請至下方網頁(kktix): <https://hackingthursday.kktix.cc/events/2bfe702b> 也歡迎現場直接參加,若人數超過上限,以有填表報名者優先。 ## 活動形式 於 19:00 ~ 20:00 大家各自下班後,由大家自行攜帶餐點及飲料至摩茲工寮邊吃邊聊、敘敘舊。待茶餘飯飽之後,約於 20:00 前後,由主持人簡短介紹當天的主題及講者後,由講者開始跟大家分享他的經驗跟見聞。 分享的時間長短不限,可以是 7 分鐘的 lightening talk, 也可以是 20~30 分鐘的侃侃而談。由講者自由發揮。 講者介紹完內容之後,後續即進入提問回答及自由閒聊時間。由於能和講者跟其他與會者第一手的接觸與交流,後半段的自由交流時間常常是能認識新朋友和意外收獲的好時光。 不論是老朋友、新朋友,都歡迎帶著一個輕鬆交流的心情前來參加。 ## 講題簡介 Flatpak (a Linux App Package) Introduction 在現今 Linux 生態系中,導入 Sandbox 概念的 Flatpak \[1\] 技術,已逐漸成為桌面程式的主流封裝格式。使用 Flatpak 封裝的應用程式,可以上架到 Flathub (The Linux App Store) \[2\],各 Linux distribution 使用者就可透過一致且方便的方法下載、安裝與使用該應用程式。本次將分享 Flatpak 的基礎概念、封裝的步驟,與一些實際案例。 The Flatpak \[1\] with Sandbox concept has been becoming the major desktop application packaging format. The Flatpak applications can be uploaded to Flathub (The Linux App Store) \[2\]. Then, users of all Linux distributions can download, install and use the applications with the same tool / consistent way. Will introduce the basic concept of Flatpak, how to package as a flatpak application, and explore some real cases this time. \[1\]: https://flatpak.org/ \[2\]: https://flathub.org/ ## 投影片 [Package Applications as Flatpaks - HackMD](https://hackmd.io/@starnight/Package-Applications-as-Flatpaks) (Author: 潘建宏 StarNight) ## 錄影 [Flatpak (a Linux App Package) Introduction - YouTube](https://www.youtube.com/watch?v=7eOBC5neqks) (感謝 DreamerC 協助錄影與上傳) ## 來賓 - [x] Mat - from H4 - [x] 果凍 - [x] 張oo誠 - [x] jeffery - 家裏開咖啡廳 - 後來接觸個技術社群 - 軟體、資安 - [x] eric (哲佑) - firmware, backend - [x] dreamerc - 負責錄影 - debian, ubuntu - [x] 吳oo佑 - [x] Pellaeon - [x] Ben Lau - from HK - AI - [x] Kait Wang - Web, rails, vue, rust, nvim - [x] RJ - 遠傳, IoT, ubuntu 社羣 - [x] StarNight (speaker) - [ ] 王oo中 - [ ] kkyo - [ ] jelly NOTE: 歡迎自行補充個人自介資訊,方便大家交流跟聯絡。若有匿名需求者,也歡迎自行 mask/unmask 。 ## 活動照片 [Photo album - 2023-11-28_主題分享_StarNight_Flatpak](https://photos.hackingthursday.org/%E6%B4%BB%E5%8B%95-2023-11-28_%E4%B8%BB%E9%A1%8C%E5%88%86%E4%BA%AB_StarNight_Flatpak.html) ![](https://photos.hackingthursday.org/media/large/%E6%B4%BB%E5%8B%95/2023-11-28_%E4%B8%BB%E9%A1%8C%E5%88%86%E4%BA%AB_StarNight_Flatpak/IMG_20231128_193750.jpg) (逆時針左起: StarNight, RJ, Kait, Ben Lau, DreamerC, Eric哲佑, Jeffery, 張oo誠, 果凍) ![](https://photos.hackingthursday.org/media/large/%E6%B4%BB%E5%8B%95/2023-11-28_%E4%B8%BB%E9%A1%8C%E5%88%86%E4%BA%AB_StarNight_Flatpak/IMG_20231128_212334.jpg) (逆時針左起: StarNight, RJ, Kait, DreamerC, Eric哲佑, Jeffery, 張oo誠, Mat) ## 活動筆記 - endless fundation - https://hackmd.io/@starnight/Package-Applications-as-Flatpaks - sandbox - `flatpak-builder` - `org.freedesktop.Sdk//23.08` 的 `//` 是指本機的 ARCH - `flatpak run --command=sh` (about xcode 封裝) pkg 吧? Ben Lau: 蘋果不是自動的,還是要設定 - MSIX - 若是像 systemd 的話, 就不能用。 目前還是主要是以桌面程式爲主。 ``` --share=network --socket=fallback-x11 --socket=wayland ``` - share 的權限去哪裏看? - [Sandbox Permissions — Flatpak documentation](https://docs.flatpak.org/en/latest/sandbox-permissions.html) - 中文輸入的話,有些問題,例如 Chromium 在某些情況下會有 X11/Wayland 之間的問題 - 推薦的 Flathub 上架參考範例: [flathub/org.gnome.gedit](https://github.com/flathub/org.gnome.gedit) - 自動更新 dependencies 的案例: [flathub/org.endlessos.Key](https://github.com/flathub/org.endlessos.Key) `x-checker-data` [org.endlessos.Key/org.endlessos.Key.yaml at master · flathub/org.endlessos.Key](https://github.com/flathub/org.endlessos.Key/blob/master/org.endlessos.Key.yaml): ``` x-checker-data: type: git tag-pattern: ^v([\d.]+)$ ``` - 打包的推薦的入門文件: [Building your first Flatpak — Flatpak documentation](https://docs.flatpak.org/en/latest/first-build.html) ### 常用指令 #### list - `flatpak list` 列出目前安裝的 flatpak - `flatpak list --app` 只列出 app 類別的 flatpak #### run - `flatpak run <id>` 執行 flatpak ,預設會執行 manifest 裡定義的 command,後面可接權限參數讓這次執行時,暫時複寫 manifest 裡 first-args 定義的權限 - `flatpak run --command=<cmd> <id>` 執行時不執行 flatpak 內預設指令,而是執行 `<cmd>` #### info - `flatpak info <id>` 查看 flatpak 資訊 - `flatpak info -l <id>` 列出 flatpak 安裝的路徑 - `flatpak info -v <id>` / `flatpak info -vv <id>` 列出更多資訊 ## FAQ ### Question Eric哲佑: > Q: 如何全機裸奔? > 主要是測試時或是找問題時,沒辦法一一測。 > 而會想先把權限全開,看能不能排除/確定是不是權限的問題 StarNight: - 目前沒有 `ALL` 的選項,要按文件列的一一打開。 - 但有些權限在文件上沒有寫(?!) ### Question Kait: > Q: 版本問題 > Q: branch 問題 StarNight: 通常會是 tag https://github.com/flathub/org.endlessos.Key/blob/master/org.endlessos.Key.yaml ``` - name: kolibri-gnome buildsystem: meson builddir: true sources: - type: git url: https://github.com/endlessm/endless-key-flatpak.git tag: v0.8 commit: 36394a83686ac93318639a1f45ea660ced0579b6 x-checker-data: type: git tag-pattern: ^v([\d.]+)$ ``` 根據 source 的 upstream 去定的版本 看上面列的是 stable , 但自己 build 的是 master - 跟 flatpak 的 repo 有關 ### Question Mat: > Q: reproducible build by Mat > - 參考 [H4 聚會筆記 線上共筆 - HackMD](https://hackmd.io/3Rg6ERYgSqi1-Gx_1EUBJA?both#2023-11-16) 於 2023-11-16 有提到 Deterministic Build 的部分 > > Q: 預設設定檔(ex: `/etc/...`) 跟封裝的預設設定檔之間是否有交互影響? > - 例如: 有個程式(記爲: A-original) 原本讀取 `/etc/` 或 `/usr/share/` 下的預設設定檔。 > - 後來該程式推出了 Flatpak (記爲: A-flatpak) 也封裝了自己的預設設定檔 > - 在同時有舊設定檔跟新的封裝設定檔之下,是否會有互相干擾的問題? > > Q: security library 例如 `libssl` 資安修補會一直出,那該 pak 如何 update ? > - 因爲 security fix 會一直出,那已封裝的舊 libssl ,夾帶有 security hole 的 pak 該如何處置? StarNight: - reproducible build - 因爲有 timestamp 的關係, 所以每次 checksum 都會不一樣 補充資料: - [Reproducible build support · Issue #251 · flatpak/flatpak-builder](https://github.com/flatpak/flatpak-builder/issues/251) ### Question 吳oo佑: > Q: dependency 問題 > (註: 這一段沒聽清楚) StarNight: - Flatpak 不相依於 flatpak, 但 flatpak 相依於 flatpak runtime ### Share - Feedback by pellaeon [Flatseal | Flathub](https://flathub.org/apps/com.github.tchx84.Flatseal) - 用來管理 Flatpak 權限的方便工具