运行CnosDB社区版时遇datafusion依赖下载权限问题求解答
问题原因与解决办法
问题原因
- sudo环境变量丢失:使用
sudo执行脚本时,sudo会默认重置大部分环境变量,包括SSH认证所需的SSH_AUTH_SOCK等,导致Cargo无法访问当前用户的ssh-agent密钥,进而拉取依赖失败。 - Cargo内置Git客户端限制:Cargo默认使用内置Git客户端处理依赖拉取,该客户端在sudo环境下无法正确获取SSH认证信息,而系统自带的Git客户端则能正常调用SSH密钥完成认证。
解决办法
- 保留环境变量执行sudo:通过
-E参数让sudo保留当前用户的环境变量,执行命令:cd cnosdb sudo -E ./run_cluster.sh - 配置Cargo使用系统Git客户端:在用户目录的
~/.cargo/config或项目根目录的.cargo/config中添加以下配置:
配置后Cargo会调用系统Git命令拉取依赖,系统Git可正常读取SSH密钥完成认证。[net] git-fetch-with-cli = true - 避免使用sudo执行:如果脚本无需root权限即可运行,直接去掉
sudo执行:cd cnosdb ./run_cluster.sh
是否有其他用户遇到过?
是的,这是Rust/Cargo生态下的常见问题,不少开发者在使用sudo执行Rust项目构建、启动脚本时,都遇到过类似的依赖拉取SSH认证失败问题,本质都是环境变量或Git客户端认证机制冲突导致的。
内容的提问来源于stack exchange,提问作者bfr
相关产品推荐
相关产品推荐

