為 Linux 建置 Zed

儲存庫

複製 Zed 儲存庫

相依套件

  • 安裝 Rust。如果已安裝,請確認其為最新版本。

    rustup update
    
  • 安裝必要的系統函式庫

    script/linux
    

    如果您想手動安裝系統函式庫,您可以在 script/linux 檔案中找到所需的套件清單。

後端相依套件

[!WARNING] 本節仍在開發中。說明尚未完成。

如果您正在開發 Zed 的協作功能,則需要安裝 Zed collab 伺服器的相依套件。

或者,如果您已安裝 Docker,則可以使用 Docker Compose 啟動所有 collab 相依套件。

docker compose up -d

從原始碼建置

安裝相依套件後,您可以使用 Cargo 建置 Zed。

若要建置編輯器的除錯版本

cargo run

若要執行測試

cargo test --workspace

在發佈模式中,主要的使用者介面是 cli crate。您可以在開發中使用以下指令執行它:

cargo run -p cli

安裝開發版本

您可以使用以下指令在您的機器上安裝本地建置:

./script/install-linux

這將以發佈模式建置 Zed 和 cli,並使其在 ~/.local/bin/zed 中可用,同時將 .desktop 檔案安裝到 ~/.local/share

Wayland 和 X11

Zed 支援 X11 和 Wayland。預設情況下,我們會在執行時選擇可用的選項。如果您使用的是 Wayland,並且想在 X11 模式下執行,請使用環境變數 WAYLAND_DISPLAY=''

打包 Zed 的注意事項

感謝您承擔打包 Zed 的任務!

技術需求

Zed 有兩個主要的二進制檔案

  • 您需要建置 crates/cli 並使其二進制檔案在 $PATH 中以 zed 為名稱可用。
  • 您需要建置 crates/zed 並將其放置在 $PATH/to/cli/../../libexec/zed-editor。例如,如果您要將 cli 放置在 ~/.local/bin/zed,則將 Zed 放置在 ~/.local/libexec/zed-editor。由於某些 Linux 發行版(尤其是 Arch)不鼓勵使用 libexec,您也可以將此二進制檔案放置在 $PATH/to/cli/../../lib/zed/zed-editor(例如 ~/.local/lib/zed/zed-editor)。
  • 如果您要提供 .desktop 檔案,您可以在 crates/zed/resources/zed.desktop.in 中找到範本,並使用 envsubst 填入所需的值。此檔案也應重新命名為 $APP_ID.desktop,以便檔案 遵循 FreeDesktop 標準
  • 您需要確保已安裝必要的函式庫。您可以透過 檢查系統上的建置二進制檔案 來取得目前的清單。
  • 如需完整建置腳本的範例,請參閱 script/bundle-linux
  • 您可以停用 Zed 的自動更新,並透過使用環境變數 ZED_UPDATE_EXPLANATION 建置(或執行)Zed 來為嘗試手動更新 Zed 的使用者提供說明。例如:ZED_UPDATE_EXPLANATION="請使用 flatpak 更新 Zed。"
  • 請確認將 crates/zed/RELEASE_CHANNEL 檔案的內容更新為 'nightly'、'preview' 或 'stable',並且沒有換行符號。這將導致 Zed 使用憑證管理器來記住使用者的登入資訊。

其他注意事項

在 Zed,我們的首要任務是快速發展,並為我們的使用者帶來最新的技術。我們長期以來一直對軟體速度慢、過時或難以設定感到沮喪,因此我們根據這些需求建置了我們的編輯器。

然而,我們意識到許多發行版有其他的優先事項。我們希望與所有人合作,將 Zed 帶到他們最喜歡的平台上。但還有很長的路要走。

  • Zed 是一個快速發展的早期專案。我們通常每週發佈 2-3 個版本,以修復使用者回報的問題並發佈主要功能。
  • Linux 系統上可能存在其他幾個 zed 二進制檔案(12)。如果您因為這些問題而想重新命名我們的 CLI 二進制檔案,我們建議使用 zeditzeditorzed-cli
  • Zed 會以與 rustup/rbenv/pyenv 等相同的方式自動安裝正確版本的常用開發工具。我們知道這一點存在爭議,請參閱此處
  • 我們允許使用者在本地和從 zed-industries/extensions 安裝擴充功能。這些擴充功能可能會根據需要安裝更多工具,例如語言伺服器。從長遠來看,我們希望使其更加安全,請參閱此處
  • Zed 預設會連線到多個線上服務(AI、遙測、協作)。AI 和我們的遙測功能可以由您的使用者透過其 Zed 設定或透過修補我們的 預設設定檔 來停用。
  • 由於上述問題,Zed 目前無法與沙盒良好地配合使用,請參閱此處

Flatpak

[!WARNING] Zed 目前的 Flatpak 整合會在啟動時退出沙盒。依賴 Flatpak 沙盒的工作流程可能無法按預期運作。

若要在本地建置和安裝 Flatpak 套件,請按照以下步驟操作

  1. 按照 此處 的說明,為您的發行版安裝 Flatpak。
  2. 執行 script/flatpak/deps 腳本以安裝所需的相依套件。
  3. 執行 script/flatpak/bundle-flatpak
  4. 現在,套件已安裝,並且在 target/release/{app-id}.flatpak 中有一個可用的套件。

疑難排解

無法編譯 Zed

在回報問題之前,請確認您擁有最新的 rustc 版本,方法是執行 rustup update

Cargo 錯誤,聲稱相依套件正在使用不穩定的功能

請嘗試執行 cargo cleancargo build

Vulkan/GPU 問題

如果 Zed 由於 GPU 或 Vulkan 問題而在執行時當機,您可以嘗試執行 vkcube(通常作為 vulkaninfo 套件的一部分在各種發行版上提供)以嘗試找出問題的來源。嘗試透過執行 vkcube -m [x11|wayland] 在 X11 和 Wayland 模式下執行。某些版本的 vkcube 使用 vkcube 在 X11 中執行,使用 vkcube-wayland 在 Wayland 中執行。

如果您有多個 GPU,您也可以嘗試在不同的 GPU 上執行 Zed(例如,使用 vkdevicechooser)以找出問題的來源。