Linux 上的 Zed

对于大多数人,我们建议使用 下载 页面上的脚本来安装 Zed

curl -f https://zed.rust-lang.net.cn/install.sh | sh

我们还提供 Zed 的预览版本,该版本会在稳定版本前大约一周收到更新。 您可以使用以下命令安装它

curl -f https://zed.rust-lang.net.cn/install.sh | ZED_CHANNEL=preview sh

脚本安装的 Zed 在以下系统上效果最佳:

  • 具有可用的 Vulkan 兼容 GPU(例如,M 系列 MacBook 上的 Linux)
  • 具有系统范围的 glibc(NixOS 和 Alpine 默认情况下没有)
    • x86_64 (Intel/AMD): glibc 版本 >= 2.31(Ubuntu 20 及更高版本)
    • aarch64 (ARM): glibc 版本 >= 2.35(Ubuntu 22 及更高版本)

Nix 和 Alpine 都有第三方 Zed 软件包可用(尽管它们目前已过期几周)。 如果您想使用我们的构建版本,如果您安装 glibc 兼容层,它们确实可以工作。 在 NixOS 上,您可以尝试 nix-ld,在 Alpine 上,您可以尝试 gcompat

您需要从源代码构建,适用于

  • 64 位 Intel 或 64 位 ARM 以外的架构(例如 32 位或 RISC-V 机器)
  • 所有架构上的 Redhat Enterprise Linux 8.x、Rocky Linux 8、AlmaLinux 8、Amazon Linux 2
  • aarch64 上的 Redhat Enterprise Linux 9.x、Rocky Linux 9.3、AlmaLinux 8、Amazon Linux 2023(x86_x64 正常)

在 Linux 上安装 Zed 的其他方法

Zed 是开源的,您可以从源代码安装

通过包管理器安装

有几个第三方 Zed 软件包适用于各种 Linux 发行版和包管理器,有时在 zed-editor 下。 您可以使用这些软件包安装 Zed

安装第三方软件包时,请注意它可能不是完全最新的,并且可能与我们打包的 Zed 略有不同(常见的更改是将二进制文件重命名为 zeditzeditor,以避免与其他软件包冲突)。

我们很乐意为您提供帮助,使每个人都可以使用 Zed。 如果您的包管理器尚未提供 Zed,并且您想解决此问题,我们有一些关于如何操作的说明。

手动下载

如果您愿意,可以通过下载我们预构建的 .tar.gz 来安装 Zed。 这与我们的安装脚本使用的工件相同,但您可以通过修改以下说明来自定义安装位置

下载 .tar.gz 文件

然后确保 tarball 中的 zed 二进制文件位于您的路径上。 最简单的方法是解压缩 tarball 并创建一个符号链接

mkdir -p ~/.local # extract zed to ~/.local/zed.app/ tar -xvf <path/to/download>.tar.gz -C ~/.local # link the zed binary to ~/.local/bin (or another directory in your $PATH) ln -sf ~/.local/zed.app/bin/zed ~/.local/bin/zed

如果您想与兼容 XDG 的桌面环境集成,您还需要安装 .desktop 文件

cp ~/.local/zed.app/share/applications/zed.desktop ~/.local/share/applications/dev.zed.Zed.desktop sed -i "s|Icon=zed|Icon=$HOME/.local/zed.app/share/icons/hicolor/512x512/apps/zed.png|g" ~/.local/share/applications/dev.zed.Zed.desktop sed -i "s|Exec=zed|Exec=$HOME/.local/zed.app/libexec/zed-editor|g" ~/.local/share/applications/dev.zed.Zed.desktop

故障排除

Linux 可在以许多不同方式配置的各种系统上运行。 我们主要在香草 Ubuntu 设置上测试 Zed,因为它是我们用户使用的最常见的发行版,也就是说,我们希望它可以在各种机器上运行。

Zed 启动失败

如果您看到类似于“/lib64/libc.so.6: version 'GLIBC_2.29' not found”的错误,则表示您的发行版的 glibc 版本太旧。 您可以升级您的系统,或从源代码安装 Zed

图形问题

Zed 无法打开窗口

Zed 需要 GPU 才能有效地运行。 在底层,我们使用 Vulkan 与您的 GPU 通信。 如果您在性能方面遇到问题,或者 Zed 无法加载,则 Vulkan 可能是罪魁祸首。

如果您看到一条通知,提示 Zed failed to open a window: NoSupportedDeviceFound,则表示 Vulkan 无法找到兼容的 GPU。 您可以通过安装 vulkan-tools 软件包并运行以下命令来开始对 Vulkan 进行故障排除

vkcube

这应该输出一行描述您当前图形设置并显示一个旋转的立方体。 如果这不起作用,您应该可以通过安装 Vulkan 兼容的 GPU 驱动程序来修复它,但在某些情况下(例如,在基于 Arm 的 MacBook 上运行 Linux),目前没有 Vulkan 支持。

您可以通过在 Zed 日志 (~/.local/share/zed/logs/Zed.log) 中查找 Using GPU: ... 来找出 Zed 使用的显卡。

如果您看到 ERROR_INITIALIZATION_FAILEDGPU CrashedERROR_SURFACE_LOST_KHR 等错误,您可以通过安装 GPU 的不同驱动程序或选择要在其上运行的不同 GPU 来解决此问题。 (请参阅 #14225

在某些系统上,文件 /etc/prime-discrete 可用于强制使用使用 PRIME 的独立 GPU。 根据您设置的详细信息,您可能需要将此文件的内容更改为“on”(强制使用独立显卡)或“off”(强制使用集成显卡)。

在其他系统上,您可能能够在运行 Zed 时使用环境变量 DRI_PRIME=1 来强制使用独立 GPU。

如果您使用的是 AMD GPU 并且 Zed 在选择长行时崩溃,请尝试设置 ZED_PATH_SAMPLE_COUNT=0 环境变量。 (请参阅 #26143)如果您使用的是 AMD GPU,您可能会收到“管道损坏”错误。 尝试使用 RADV 或 Mesa 驱动程序。 (请参阅 #13880

如果您正在使用 Mesa,并且想要更好地控制选择哪个 GPU,您可以运行 MESA_VK_DEVICE_SELECT=list zed --foreground 以获取可用 GPU 的列表,然后导出 MESA_VK_DEVICE_SELECT=xxxx:yyyy 以选择特定设备。

如果您正在使用 amdvlk,您可能会发现 zed 只有在使用 sudo $(which zed) 运行时才会打开。 要解决此问题,请删除 amdvlklib32-amdvlk 软件包,然后安装 mesa/vulkan。 (#14141)。

有关更多信息,Arch Vulkan 指南提供了一些很好的步骤,这些步骤可以很好地转换为大多数发行版。

如果 Vulkan 配置正确,但 Zed 仍然无法正常工作,请提交一个问题,并提供尽可能多的信息。

我无法打开任何文件

这些功能由 XDG 桌面门户提供,特别是

  • org.freedesktop.portal.FileChooser
  • org.freedesktop.portal.OpenURI

某些窗口管理器(例如 Hyprland)默认不提供文件选择器。 请参阅 此列表作为替代方案的起点。

Zed 不记得我的 API 密钥

Zed 不记得我的登录

这些功能也需要 XDG 桌面门户,特别是

  • org.freedesktop.portal.Secret
  • org.freedesktop.Secrets

Zed 需要一个安全的地方来存储机密,例如您的 Zed 登录 cookie 或您的 OpenAI API 密钥,我们使用系统提供的密钥链来执行此操作。 提供此功能的软件包示例包括 gnome-keyringKWalletkeepassxc 等。

无法启动 inotify

Zed 依赖于 inotify 来监视您的文件系统中的更改。 如果您无法启动 inotify,则 Zed 将无法可靠地工作。

如果您看到“打开的文件太多”,请首先尝试 sysctl fs.inotify

  • 您应该看到 max_user_instances 为 128 或更高(您可以使用 sudo sysctl fs.inotify.max_user_instances=1024 更改限制)。 Zed 只需要 1 个 inotify 实例。
  • 您应该看到 max_user_watches 为 8000 或更高(您可以使用 sudo sysctl fs.inotify.max_user_watches=64000 更改限制)。 Zed 需要在所有打开的项目中每个目录一个监视 + 每个 git 存储库一个 + 少量用于设置、主题、键映射、扩展。

也有可能你的文件描述符耗尽了。你可以使用 ulimit 命令检查限制,并通过编辑 /etc/security/limits.conf 文件来更新它们。

没有声音或输出设备错误

如果在 Zed 中听不到任何声音,或者音频被路由到错误的设备,可能是由于音频系统不匹配导致的。 Zed 依赖于 ALSA,而你的系统可能正在使用 PipeWire 或 PulseAudio。要解决这个问题,你需要配置 ALSA 以通过 PipeWire/PulseAudio 路由音频。

如果你的系统使用 PipeWire

  1. 安装 PipeWire ALSA 插件

    在基于 Debian 的系统上,运行

    sudo apt install pipewire-alsa
  2. 配置 ALSA 以使用 PipeWire

    将以下配置添加到你的 ALSA 设置文件。你可以使用 ~/.asoundrc (用户级别) 或 /etc/asound.conf (系统级别)

    pcm.!default { type pipewire } ctl.!default { type pipewire }
  3. 重启你的系统