| title | V-Agent on Void Linux |
|---|---|
| description | Installing and building V-Agent on Void Linux, and the quirks specific to it. |
Void is supported on the glibc variant only. Everything below assumes it.
Void ships two libc variants, chosen by which ISO was installed. The musl
images are named -musl- in the filename; the default is glibc.
ldd --version | head -1The prebuilt binary is linked against glibc and cannot run on a musl install
under any circumstance, because there is no system glibc to fall back on.
Building the GUI from source against x86_64-unknown-linux-musl has never
been attempted; the only musl target the repository builds today is the
headless remote_server (see Remote Development).
Requirements: glibc 2.35 or newer, and a working Vulkan driver.
The 2.35 floor is MEASURED from the shipped binary, not copied from upstream
Zed's stated 2.31. objdump -T on the release binary shows non-weak
__libc_start_main@GLIBC_2.34 and hypot@GLIBC_2.35, so it cannot start below
2.35. It tracks whatever runner the release workflow builds on, currently
ubuntu-22.04. Void is a rolling distribution and is well past this, but the
number matters for the dependency the package declares.
This is the part that catches people out. Void has no vulkan-driver virtual
package, and installing mesa does not install a Vulkan ICD. The driver
is a separate package per GPU, and no V-Agent package can depend on it:
| GPU | Package |
|---|---|
| AMD | mesa-vulkan-radeon |
| Intel | mesa-vulkan-intel |
| NVIDIA (open source) | mesa-vulkan-nouveau |
| NVIDIA (proprietary) | nvidia (from the nonfree repository) |
| No GPU / software rendering | mesa-vulkan-lavapipe |
vulkan-loader is a dependency of the package and is pulled in for you.
To confirm the driver works before installing anything else:
sudo xbps-install -S Vulkan-Tools
vulkaninfo --summaryA line naming your GPU under Devices: means Vulkan is working. If it lists
no device, the ICD is missing: check /usr/share/vulkan/icd.d/ for a .json
matching your GPU.
CUDA being broken is not evidence that Vulkan is broken. They are separate driver entry points, and V-Agent uses only Vulkan.
Download v-agent-<version>_1.x86_64.xbps from the
releases page. xbps has no
equivalent of pacman -U or dnf install ./file.rpm: it installs from
repositories, so the directory holding the file has to be indexed first.
cd ~/Downloads
xbps-rindex -a v-agent-*.x86_64.xbps
sudo xbps-install -R ~/Downloads v-agentThe release asset name carries the version, so releases/latest/download/ does
not resolve to it; take the filename from the releases page.
Do not rename the file. xbps looks it up as <pkgver>.<arch>.xbps from the
index it just wrote, and a renamed file fails with
failed to checksum: No such file or directory.
packaging/void/template is an
xbps-src template that wraps the
same prebuilt binary. Unlike the release .xbps, xbps-src derives the library
dependencies from the binary's NEEDED entries rather than a hand-written
list:
git clone --depth 1 https://github.com/void-linux/void-packages
cd void-packages && ./xbps-src binary-bootstrap
cp -r /path/to/V-Agent/packaging/void srcpkgs/v-agent-bin
./xbps-src pkg v-agent-bin
sudo xbps-install --repository hostdir/binpkgs v-agent-binThis does not require root until the final install step.
The .AppImage and the portable .tar.gz work on Void as on any other
distribution, subject to the same glibc and Vulkan requirements.
script/linux detects xbps-install and installs the Void build dependencies:
script/linux
cargo runSee Building V-Agent for Linux for the rest, which is not Void-specific.
Two Void-specific things that script does not do for you:
- It installs no Vulkan ICD, only
vulkan-loader. Install the driver package for your GPU separately, as above, or the build will succeed and the editor will fail to start. - It does not install a Rust toolchain or
protoc. Userustup(it readsrust-toolchain.tomland picks the pinned version automatically) and installprotobuffrom xbps, or drop aprotocrelease binary in~/.local/bin.
The Void list in script/linux was missing libX11-devel, libglvnd-devel
and vulkan-loader-devel until it was corrected. Without libX11-devel the
build panics in the x11 crate's build script with "The system library x11
required by crate x11 was not found", because zed-scap pulls x11 in
through gpui. If you are building against an older checkout, install those
three by hand.
The release binary ships unstripped so that V-Agent's hang detector can
symbolize its own backtraces. Installed size is roughly 2.3 GB against a
405 MB download. This is inherited from the debug = "limited" setting in the
workspace release profile, not from the packaging.
Getting v-agent into the official void-packages repository requires review
by a Void maintainer, the same adoption problem that applies to Arch's official
repositories and to Debian. The realistic path if that stalls is a self-hosted
xbps repository, which users add once and then install from normally.