Parrot OS编译Zed Code Editor时live_kit_server编译错误求助
解决Parrot OS编译Zed Code Editor时live_kit_server构建失败问题
问题描述
执行cargo run编译Zed时,live_kit_server v0.1.0的自定义构建命令失败,核心报错:
protoc failed: Could not make proto path relative: protocol/livekit_room.proto: No such file or directory
已尝试重新安装live_kit_server crate、切换Zed最新版本,问题仍未解决。完整报错日志:
cargo run Compiling git2 v0.15.0 Compiling reqwest v0.11.20 Compiling live_kit_server v0.1.0 (/home/lilo/Program_Files/zed-0.124.7/crates/live_kit_server) Compiling live_kit_client v0.1.0 (/home/lilo/Program_Files/zed-0.124.7/crates/live_kit_client) Compiling procinfo v0.1.0 (https://github.com/zed-industries/wezterm?rev=0c13436f4fa8b126f46dd4a20106419b41666897#0c13436f) Compiling hound v3.5.0 Compiling block v0.1.6 Compiling ignore v0.4.20 error: failed to run custom build command for `live_kit_server v0.1.0 (/home/lilo/Program_Files/zed-0.124.7/crates/live_kit_server)` Caused by: process didn't exit successfully: `/home/lilo/Program_Files/zed-0.124.7/target/debug/build/live_kit_server-063323342ee20cc4/build-script-build` (exit status: 101) --- stderr thread 'main' panicked at crates/live_kit_server/build.rs:4:10: called `Result::unwrap()` on an `Err` value: Custom { kind: Other, error: "protoc failed: Could not make proto path relative: protocol/livekit_room.proto: No such file or directory\n" } note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace warning: build failed, waiting for other jobs to finish...
解决方案
1. 拉取完整Git子模块
Zed依赖的LiveKit proto文件通常存储在Git子模块中,未拉取会导致文件缺失:
git submodule update --init --recursive
2. 安装并验证protoc工具
Parrot OS上安装官方protobuf编译器:
sudo apt update && sudo apt install protobuf-compiler
验证安装成功(要求版本3.0以上):
protoc --version
3. 修正build.rs中的proto文件路径
进入live_kit_server目录查看构建脚本:
cd /home/lilo/Program_Files/zed-0.124.7/crates/live_kit_server cat build.rs
如果脚本中引用的protocol/livekit_room.proto路径是相对当前目录的,而实际文件在仓库根目录的protocol文件夹下,需要调整路径层级,示例修改:
// 原代码 protoc_rust::Codegen::new() .out_dir("src") .input("protocol/livekit_room.proto") .run() .unwrap(); // 修改后(根据实际文件位置调整../../的层级) protoc_rust::Codegen::new() .out_dir("src") .input("../../protocol/livekit_room.proto") .run() .unwrap();
4. 清理缓存后重新编译
cargo clean cargo run
内容的提问来源于stack exchange,提问作者ali housseini
相关产品推荐
相关产品推荐

