Linux系統Flatpak套件管理員使用教學,安裝軟體的便利方式

Flatpak是什麼?它是Linux的一種軟體(套件)打包格式,可以減少軟體安裝的複雜度,統一所有發行版的安裝指令,再也不用考慮個別發行版間的依賴問題。此外還用沙盒機制提供更好的安全性,並將應用程式設定檔統一存放在固定目錄下。

提供Flatpak軟體的商店「Flathub」已上架多款熱門應用程式,開源與專有軟體皆有,例如Google Chrome、Microsoft Teams、Steam、LibreOffice、Blender、GIMP,不論是哪個Linux發行版都能統一下載到最新版的軟體。

大多數Linux發行版已支援Flatpak技術,沒內建的話用指令裝一下就可以了。

這篇文章將會介紹如何在你的Linux系統上使用Flatpak安裝軟體,以及解決相關的權限和儲存問題。

1. 如何在Linux發行版安裝Flatpak

  1. 請到Flatpak官網查詢各大Linux發行版的安裝方法,例如Ubuntu只需執行以下指令就能安裝Flatpak套件:
1
sudo apt install flatpak
  1. 裝好還要加入Flathub的套件庫。

Flathub會建議將套件庫加入到系統:

1
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

但是,以上指令會將Flatpak加到system,變成安裝應用程式需要sudo密碼。針對不想每次裝應用程式都打密碼的使用者,可以加上--user給一般使用者加入套件庫:

1
flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

這樣一般使用者就能免密碼安裝應用程式,且Flatpak只會安裝到該名使用者的家目錄。解除安裝應用程式亦不需要sudo。

  1. 做完以上措施後,重開機後就能用Flatpak安裝軟體。

2. Flatpak相關指令

更多指令請看官方文件

指令用途
flatpak search [應用程式名稱]搜尋應用程式
flatpak install [應用程式名稱]安裝應用程式
flatpak install [.flatpakref]從flatpakref檔案安裝應用程式
flatpak run [應用程式名稱]執行應用程式
flatpak uninstall [應用程式名稱]移除應用程式
flatpak uninstall [應用程式名稱] --delete-data移除應用程式並刪除資料
flatpak uninstall --unused移除用不到的依賴套件
flatpak list列出安裝的軟體
flatpak override覆寫Flatpak應用程式設定
flatpak permission-reset [應用程式名稱]重設應用程式權限
flatpak update更新應用程式
flatpak remotes列出遠端軟體庫
flatpak kill [應用程式名稱]終止應用程式執行

3. 如何安裝Flatpak應用程式

3.1. 安裝與解除安裝

Flathub是蒐羅最多Flatpak應用程式的網站,是混雜開源與專有軟體的儲存庫。另外開發者可以自己經營Flatpak儲存庫,例如Fcitx5有提供測試版儲存庫、Fedora Silverblue有全開源的儲存庫等等,但一般使用者只要用Flathub來源的應用程式就夠了。

那我們要怎麼安裝在Flathub看到的應用程式呢?

Mozilla Firefox為例,在Flathub頁面往下滑,貼上頁面所顯示的指令即可。

1
2
# 安裝時可能會出現要安裝至system或user,通常我是選user,這樣以後更新就不用打密碼
flatpak install org.mozilla.fireofox

嫌指令太長,你也可以改用下一節討論的圖形化前端(應用商店)安裝。

你可能會發現Flatpak應用程式要下載的檔案比一般用套件管理員裝的還要大許多,這是正常的,我在這篇有另外討論Flatpak安裝應用程式的優缺點。

應用程式安裝後就會出現在應用程式列表,使用起來跟一般應用程式沒兩樣。

要從終端機啟動Flatpak應用程式,請使用flatpak run指令,並且要打出完整Flatpak應用程式名稱。

1
flatpak run org.mozilla.firefox

Flatpak跟一般應用程式一樣,可以另外加入啟動引數

1
2
# 以隱私視窗引數啟動Firefox
flatpak run org.mozilla.firefox -private-window

要使用環境變數,用flatpak override指令

1
2
# 強制Firefox使用Wayland的環境變數
flatpak override --env MOZ_ENABLE_WAYLAND=1 org.mozilla.firefox

欲解除安裝Flatpak應用程式,使用flatpak remove指令。注意還要加上--delete-data才會在解除安裝的時候一併刪除該程式的設定檔。

1
flatpak remove org.mozilla.firefox --delete-data

3.2. Flatpak應用程式安裝路徑

Flatpak應用程式資料位於~/.var/app/<應用程式名稱>目錄,這裡也是各個應用程式設定檔的統一存放位置。像MPV、VIM這類需要撰寫設定檔的應用程式,就是將設定檔丟到這裡。

上面我們提到要從終端機執行Firefox,需要用flatpak run org.mozilla.firefox指令,但若其他應用程式是直接呼叫firefox來開啟瀏覽器呢?

這時請將Flatpak二進位檔的安裝路徑/var/lib/flatpak/exports/bin加到~/.bashrc

1
2
# 此時執行Firefox的指令從flatpak run org.mozilla.firefox縮短為org.mozilla.firefox取代
PATH=$PATH:/var/lib/flatpak/exports/bin

再視需要建立軟連結或alias

1
2
# 執行firefox等同執行org.mozilla.firefox
alias firefox = org.mozilla.Firefox

4. 安裝Flatpak應用商店前端

除了從Flathub網頁複製指令外,也可以使用桌面環境的應用程式商店搜尋、下載Flatpak應用程式。

應用程式商店讓使用者免打指令安裝程式,例如GNOME Software和KDE Discover。這些應用商店還有加入使用者評分機制。

KDE Discover預設支援Flathub,GNOME Software則是要另外安裝gnome-software-plugin-flatpak的系統套件才會顯示Flathub上的應用程式。

在應用商店瀏覽的時候應會顯示Flathub來源,如下圖KDE Discover的畫面。

5. 用Flatseal管理Flatpak應用程式權限

借助Flatseal這款圖形化的應用程式就可方便管理Flatpak程式的權限。該應用程式其實也是用Flatpak打包,可於Flathub取得。

開啟後就會看到系統安裝的Flatpak應用程式,使用者可以個別給應用程式設定「允許存取所有硬體裝置」、「使用虛擬化」、「允許存取其他硬碟」等權限。

例如Flatpak版的Firefox無法存取使用者家目錄以外硬碟的檔案,你可以在這裡開放特定目錄給Firefox存取。

順帶一提,KDE 5.27以上版本已將Flatseal的一部分功能整合至系統設定 → 應用程式的界面。

6. 自動更新Flatpak應用程式

如果隔很久才手動更新Flatpak,可能會要下載大量資料。在網路速度許可的情況下,可以利用systemd timer,每日自動檢查更新Flatpak應用程式,每日一小點一小點的更新。

openSUSE Tumbleweed已內建此systemd timer。

  1. 新增服務
1
sudo systemctl edit --full --force update-system-flatpaks.service
  1. 填入以下內容
1
2
3
4
5
6
7
8
9
[Unit]
Description=Update system Flatpaks

[Service]
Type=oneshot
ExecStart=/usr/bin/flatpak --system update -y

[Install]
WantedBy=default.target
  1. 建立timer
1
sudo systemctl edit --full --force update-system-flatpaks.timer
  1. 填入以下內容
1
2
3
4
5
6
7
8
9
[Unit]
Description=Update system Flatpaks daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target
  1. 啟用服務
1
2
sudo systemctl daemon-reload
sudo systemctl enable --now update-system-flatpaks.timer

7. 延伸閱讀

如果本網站文章對您有幫助,歡迎贊助我。