Changing flatpak installation locations to external drives.
眾所皆知Flatpak程式十分龐大,隨便一個瀏覽器都高達1GB,因為程式為了不依賴Linux宿主機的資源,將自身需要的函式庫都包在一起。縱然會共享runtime,還是免不了佔用許多空間,對一些小容量的裝置不友善。
例如Surface Go 2內部空間只有64GB。Steam Deck買最小64GB容量的話空間也不多。
常常用Flatpak的話,空間就都被佔滿了!
如果說裝置可以用額外的SD卡或者外部硬碟擴充空間,那麼我們應該能夠把Flatpak的程式移動過去才對。
在Flatpak的安裝目錄建立符號連結(symlink),將目錄指向外部硬碟是一個辦法,不過其實Flatpak本身就支援指定外部安裝路徑了喔。
1. 新增自訂安裝路徑#
Flatpak預設有兩種安裝路徑,下載的映像檔會放在system(
/var/lib/flatpak/)或user(~/.local/share/flatpak/)在外部磁碟建立一個給Flatpak儲存資料的目錄,例如我的例子是
/run/user/media/SDCARD/flatpak/編輯設定檔,這裡要新增一個外部安裝檔
sudo mkdir -p /etc/flatpak/installations.d/
sudo vim /etc/flatpak/installations.d/extra.conf- 指定這個安裝檔叫做extra,並填入路徑
[Installation "extra"]
Path=/run/user/media/SDCARD/flatpak
DisplayName=Extra Installation
StorageType=harddisk- 然後給這個外部安裝設定檔加入Flathub套件庫
flatpak --installation=extra remote-add flathub https://flathub.org/repo/flathub.flatpakrepo- 這樣的話就可以安裝Flatpak套件了,執行指令的時候一律要加上
flatpak --installation=extra。
2. 資料儲存路徑#
雖然Flatpak程式安裝在外部路徑,但是Flatpak程式產生的資料依然會寫入到目前使用者的~/.var/。
如果你想要完全隔離,只有將整個/home獨立掛載到其他磁碟一途了。
那要是把裝有Flatpak程式的外部磁碟抽掉,Linux系統能否依然開機?是可以的,但就那部份安裝在外部磁碟的程式會暫時消失。Flatpak程式圖示會出現在Linux桌面,看的乃是Dekstop Entry(位於外部磁碟機的/flatpak/exports/share/applications/)能不能被掃描到。
3. 遷移現有Flatpak程式到外部磁碟#
為了防止權限問題,我不建議將整個
~/.local/share/flatpak/目錄直接複製到外部磁碟。我覺得直接重裝比較快!不過here is the deal:Flatpak程式移除後預設是不會刪除資料,且Flatpak程式不論裝在哪裡,資料預設都是寫入到目前使用者家目錄。因此簡單備份一下Flatpak程式列表,移除後再重裝就行。匯出目前Flatpak程式列表
flatpak --user list --app --columns=application > flatpaks.txt- 解除安裝所有Flatpak程式,移除所有依賴項目
flatpak --user remove --all
flatpak --user remove --unused- 還原Flatpak安裝程式列表,安裝到外部磁碟機
xargs flatpak --installation=extra install -y < flatpaks.txt4. 將此作為可攜式軟體的可能性?#
有可能,這確實是一個方式,如果多個系統共用同一個Flatpak程式的磁碟,就不用重複下載程式。
不過每台電腦需要的函式庫不太一樣,且宿主機依然需要安裝Flatpak才能使用。
建議還是用Create USB的方式建立可攜式Flatpak軟體比較妥當。


