快速结论:这个报错通常出现在 Linux 上把 ~/.cache/llama.cpp/rpc 设成符号链接(symlink)后启动 llama.cpp RPC server 的场景,程序会误报无法创建缓存目录。优先排查该符号链接指向的目标目录是否存在、以及当前运行用户是否有权限访问。
适用环境:Issue 已确认的环境为 Linux、提交 76a5bc86d1bdfae96feccdc7a41fea535e792e6e、llama.cpp RPC server(rpc-server -c / ggml-rpc-server)、CUDA 设备 NVIDIA GeForce RTX 4070(11873 MiB、compute capability 8.9)。Issue 未提供 Python、PyTorch 版本信息。
最快修复方案:暂无确认的一步修复方案。Issue 中维护者用有效符号链接在 master 和 76a5bc8~1 上测试均未复现回归,只有悬空符号链接(目标不存在)才会失败;因此可优先尝试确认符号链接目标目录真实存在且当前用户可读写,或暂时改用普通目录而非符号链接。
注意事项:“root 能启动、普通用户失败”的线索来自报告者观察,但 Issue 未给出最终根因结论,也未确认是哪一处代码回归导致,属于未验证推测。该 Issue 标签为 bug-unconfirmed,且已关闭,方案不一定适用于其他提交或环境。
问题场景
用户在 Linux 上运行 llama.cpp 的 RPC server:先用 rpc-server -c -H 0.0.0.0 -p 50052 启动服务,同时把缓存目录 /home/rpcserver/.cache/llama.cpp/rpc 设置为指向 /data3hd/models/rpccache/Q3627B.Q4_E_H 的符号链接,该目标目录已存在且存放了模型哈希文件。启动时程序直接报无法创建缓存目录并退出。报告者指出以 root 身份运行时同一命令可以正常启动并显示 local cache : /root/.cache/llama.cpp/rpc,而普通用户 rpcserver 则失败。
报错原文
rpcserver@tnewton5:~/.cache/llama.cpp$ rpc-server -c -H 0.0.0.0 -p 50052
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
WARNING: Host ('0.0.0.0') is != '127.0.0.1'
Never expose the RPC server to an open network!
This is an experimental feature and is not secure!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ggml_cuda_init: found 1 CUDA devices (Total VRAM: 11873 MiB):
Device 0: NVIDIA GeForce RTX 4070, compute capability 8.9, VMM: yes, VRAM: 11873 MiB
Failed to create cache directory: /home/rpcserver/.cache/llama.cpp/rpc
原因分析
可能原因是提交 76a5bc86d1bdfae96feccdc7a41fea535e792e6e 引入的缓存目录创建逻辑,在目录本身是符号链接、或当前用户对链接目标缺少某些权限时,判断“无法创建目录”并直接报错。维护者的复现脚本显示:悬空符号链接(目标不存在)在新旧版本都会失败,而有效的符号链接在 master 与 76a5bc8~1 上均能正常工作,因此未能确认是哪个具体代码改动导致的回归。报告者额外观察到 root 可以启动、普通用户不行,这提示可能与权限或路径解析有关,但 Issue 中没有给出最终定位。
环境排查
- 确认 llama.cpp 的提交版本,重点确认是否包含
76a5bc86d1bdfae96feccdc7a41fea535e792e6e。 - 确认操作系统为 Linux,并使用普通用户而非 root 运行 RPC server。
- 确认
~/.cache/llama.cpp/rpc是否为符号链接,以及ls -l显示的链接目标。 - 确认符号链接目标目录真实存在且有内容(Issue 中目标为
/data3hd/models/rpccache/Q3627B.Q4_E_H)。 - 确认当前用户对符号链接路径上的各级目录(
~/.cache、~/.cache/llama.cpp、链接目标及其父目录)具备可执行/可读写权限。 - 确认 CUDA 设备可用(Issue 中为 RTX 4070、CUDA11.8 级别显存 11873 MiB),但这与缓存目录报错无直接因果关系。
解决步骤
- 先确认符号链接目标是否存在:执行
ls -l ~/.cache/llama.cpp/rpc,并检查链接指向的目录能否正常cd进入。 - 如果目标是悬空链接或不存在,先创建目标目录,再重新启动 RPC server,因为维护者测试表明悬空链接在新旧版本都会失败。
- 如果目标存在,检查普通用户对该路径的权限:对链接自身、链接目标以及各级父目录执行
ls -ld,确认运行用户具备遍历与读写权限。 - 作为可优先尝试的绕过方式,暂时把
~/.cache/llama.cpp/rpc替换为普通目录(取消符号链接),或将缓存指向用户可完全控制的位置后启动,以验证是否为符号链接相关行为。 - 若上述均无效,按维护者思路补充信息:提供完整的目录权限、符号链接目标状态,以及在
master与76a5bc8~1上的对比结果,便于进一步定位回归。
验证方法
重新执行 rpc-server -c -H 0.0.0.0 -p 50052,观察是否还出现 Failed to create cache directory。若启动成功,日志中应出现 Starting RPC server v7.0.0、endpoint、local cache 以及 CUDA 设备列表等信息,即表示缓存目录问题已解决。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug]: llama-index-embeddings-azure-openai 0.6.0 is still dependent on llama-index-llms-azure-openai>=0.4.0,<0.6](https://www.chat-gpts.plus/wp-content/uploads/2026/10/23325-955c0d99-768x403.jpg)

