快轉到主要內容

Flatpak版Linux Visual Studio Code安裝筆記

分類   Linux系統 Linux好用軟體
標籤   Flatpak Visual Studio Code
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

本文列出Ivon在設定Flatpak版Visual Studio Code (VS Code) 過程遇到的一些眉角。

為何要安裝Flatpak版的Visual Studio Code?

Flatpak是一種Linux容器技術,將所有依賴項目打包在一起,將程式runtime與系統隔離。很多immutable distro都有採用Flatpak技術,例如Fedora Silverblue、openSUSE MicroOS、Endless OS、Vanilla OS、Steam OS 3.0 (Steam Deck)。

對這類發行版的用戶來說,既然不方便變更系統,那麼透過Flatpak安裝Visual Studio Code便是一個選項。

但是Flatpak的沙盒機制會對身為小型IDE的Visual Studio Code造成困擾,得要自行找解方。

  • 測試系統:Ubuntu 22.04 LTS
  • Visual Studio Code版本:1.85.1

警告:Flatpak版Visual Studio Code不受Microsoft官方支援。如果你想要在Linux無痛使用VSCode建議還是優先裝 官方發表的deb版

Flatpak版Visual Studio Code目前由網路社群打包,相關Issue請優先到 Github儲存庫回報。

Flatpak版的Visual Studio Code可用以下指令安裝:

flatpak --user install flathub com.visualstudio.code

Flatpak版Visual Studio Code程式的資料會放在~/.var/app/com.visualstudio.code/,請不要賦予家目錄的全部讀取權限,避免混亂。

1. 一些重要設定
#

首先,開放Visual Studio Code存取其他硬碟的路徑,例如/run/media/user/SSD2

flatpak override --filesystem="/run/media/user/SSD2" com.visualstudio.code

我使用KDE桌面,但Microsoft無法同步帳號設定,要開放dbus session,讓Visual Studio Code可以讀取KWallet儲存密碼:

flatpak --user override--talk-name=org.kde.KWallet.* com.visualstudio.code
flatpak --user override --talk-name=org.kde.kwalletd5com.visualstudio.code

GNOME的話請嘗試在argv.json加入"password-store": "gnome-libsecret"

若要讓Visual Studio Code使用Linux系統的終端機,按Ctrl+Shift+P,開啟使用者設定,開啟settings.json,填入host-spawn指令,讓Visual Studio Code能啟動bash和使用sudo。

{
 "terminal.integrated.defaultProfile.linux": "bash",
        "terminal.integrated.profiles.linux": {
          "bash": {
            "path": "host-spawn",
            "args": ["bash"]
          }
        }
}

如果要以純Wayland模式啟動Visual Studio Code,編輯desktop檔案~/.local/share/flatpak/app/com.visualstudio.code/current/active/export/share/applications/com.visualstudio.code.desktop,在Exec=加入以下引數:

Exec=/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=code --file-forwarding com.visualstudio.code --reuse-window @@ %F @@  --enable-features=UseOzonePlatform --ozone-platform=wayland

終端機字體如果怪怪的,用 fontconfig解決。

2. 開發程式語言的runtime問題
#

若要開發C、Go、NodeJS、Java、C++之類的程式,Flatpak可能讀不到Linux系統所安裝的runtime。這時得從Flatpak套件庫裝Freedesktop.org的擴充套件,再將其啟用。

  1. 進入Visual Studio Code容器內部的bash
flatpak run --command=sh com.visualstudio.code
  1. 查看內建的runtime
# shared runtime
ls /usr/bin
# bundled with this flatpak
ls /app/bin
  1. 安裝對應程式語言的擴充套件,通常是org.freedesktop.Sdk.Extension開頭。用flatpak search搜尋更多程式語言套件。
# C/C++
flatpak install org.freedesktop.Sdk.Extension.llvm14

# Rust
flatpak install org.freedesktop.Sdk.Extension.rust-stable

# .Net Framework
flatpak install flathub org.freedesktop.Sdk.Extension.dotnet

# Golang
flatpak install flathub org.freedesktop.Sdk.Extension.golang

# NodeJS
flatpak install flathub org.freedesktop.Sdk.Extension.node18

# OpenJDK
flatpak install flathub org.freedesktop.Sdk.Extension.openjdk17
  1. 裝好後,要為Visual Studio Code啟用指定的Extension,例如NodeJS 18,或用*啟用全部Extension
# 僅啟用node18
flatpak --user override --env=FLATPAK_ENABLE_SDK_EXT=node18 com.visualstudio.code

# 全部啟用
flatpak --user override --env=FLATPAK_ENABLE_SDK_EXT=* com.visualstudio.code
  1. 再將Flatpak內部的路徑加到PATH,比如這裡把Flatpak Bundle的NodeJS 18加進去
echo "PATH=$PATH:/home/user/.local/share/flatpak/runtime/org.freedesktop.Sdk.Extension.node18/x86_64/23.08/active/files/bin/" >> ~/.bashrc

source ~/.bashrc
  1. 有些程式工具寫死只能讀取系統的執行檔,或可嘗試用flatpak override開放讀取權限。
flatpak override --filesystem=/usr/bin/clang com.visualstudio.code

3. 連接至KVM虛擬機的問題
#

賦予讀取kvm device的權限即可

sudo flatpak override  --device=kvm com.visualstudio.code
flatpak override --user  --device=kvm com.visualstudio.code

4. 連接Docker容器的問題
#

如果要搭配延伸模組 ms-azuretools.vscode-docker,連接到本機Docker容器,啟用以下設定讓Flatpak存取Docker的socket:

sudo flatpak override --filesystem=/run/docker.sock com.visualstudio.code
flatpak override --user --filesystem=/run/docker.sock com.visualstudio.code

使用Podman的話則開放Podman的socket

flatpak override --user --filesystem=xdg-run/podman com.visualstudio.code

再於settings.json指定Docker的路徑

{
    "docker.dockerPath": "/run/host/usr/bin/docker"
}

Podman的路徑:

{
    "docker.dockerPath": "/app/tools/podman/bin/podman-remote"
}

參考資料
#

相關文章

Linux系統如何安裝Flatpak軟體套件?使用教學
分類   Linux系統 Linux好用軟體
標籤   Flatpak Linux Freedesktop Specifications
免費開源的Linux影片剪輯軟體:Kdenlive使用教學
分類   Linux系統 Linux好用軟體
標籤   Kdenlive Video Editing
Czkawka軟體用法,Linux以圖搜圖、搜尋重複檔案的小工具
分類   Linux系統 Linux好用軟體
標籤   Disk Cleanup Linux Windows MacOS

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

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