快轉到主要內容

自訂Flatpak程式安裝位置,安裝到外部磁碟機

· 民國115年丙午年
·
切換繁體/簡體
分類 Linux系統 Linux使用技巧
標籤 Flatpak
目錄

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. 新增自訂安裝路徑
#

  1. Flatpak預設有兩種安裝路徑,下載的映像檔會放在system(/var/lib/flatpak/)或user(~/.local/share/flatpak/)

  2. 在外部磁碟建立一個給Flatpak儲存資料的目錄,例如我的例子是/run/user/media/SDCARD/flatpak/

  3. 編輯設定檔,這裡要新增一個外部安裝檔

sudo mkdir -p /etc/flatpak/installations.d/

sudo vim /etc/flatpak/installations.d/extra.conf
  1. 指定這個安裝檔叫做extra,並填入路徑
[Installation "extra"]
Path=/run/user/media/SDCARD/flatpak
DisplayName=Extra Installation
StorageType=harddisk
  1. 然後給這個外部安裝設定檔加入Flathub套件庫
flatpak --installation=extra remote-add flathub https://flathub.org/repo/flathub.flatpakrepo
  1. 這樣的話就可以安裝Flatpak套件了,執行指令的時候一律要加上flatpak --installation=extra

2. 資料儲存路徑
#

雖然Flatpak程式安裝在外部路徑,但是Flatpak程式產生的資料依然會寫入到目前使用者的~/.var/

如果你想要完全隔離,只有將整個/home獨立掛載到其他磁碟一途了。

那要是把裝有Flatpak程式的外部磁碟抽掉,Linux系統能否依然開機?是可以的,但就那部份安裝在外部磁碟的程式會暫時消失。Flatpak程式圖示會出現在Linux桌面,看的乃是Dekstop Entry(位於外部磁碟機的/flatpak/exports/share/applications/)能不能被掃描到。

3. 遷移現有Flatpak程式到外部磁碟
#

  1. 為了防止權限問題,我不建議將整個~/.local/share/flatpak/目錄直接複製到外部磁碟。我覺得直接重裝比較快!不過here is the deal:Flatpak程式移除後預設是不會刪除資料,且Flatpak程式不論裝在哪裡,資料預設都是寫入到目前使用者家目錄。因此簡單備份一下Flatpak程式列表,移除後再重裝就行。

  2. 匯出目前Flatpak程式列表

flatpak --user list --app --columns=application > flatpaks.txt
  1. 解除安裝所有Flatpak程式,移除所有依賴項目
flatpak --user remove --all

flatpak --user remove --unused
  1. 還原Flatpak安裝程式列表,安裝到外部磁碟機
xargs flatpak --installation=extra install -y < flatpaks.txt

4. 將此作為可攜式軟體的可能性?
#

有可能,這確實是一個方式,如果多個系統共用同一個Flatpak程式的磁碟,就不用重複下載程式。

不過每台電腦需要的函式庫不太一樣,且宿主機依然需要安裝Flatpak才能使用。

建議還是用Create USB的方式建立可攜式Flatpak軟體比較妥當。

參考資料
#

相關文章


此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

(留言板載入中)這是Giscus留言板,需要Github帳號才能留言。支援Markdown語法,若要上傳圖片請善用外部圖床。您的留言會在Github Discussions向所有人公開。

Click here to edit your comments.

(留言板載入中)這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用外部圖床網站。