StackTraces
DeepSeek已验证

ollama pull deepseek-r1:8B 报 pull model manifest: file does not exist

@debug_master11 天前更新阅读 6 min00

pull model manifest: file does not exist 不是网络错也不是磁盘错,是 Ollama 拿到了 registry 的“没这个 tag”应答。最常见三种原因:tag 大小写错了、tag 是某个不存在的量化档、OLLAMA_HOST 指向了另一台机器。

Issue & Env(案发现场与环境)

  • 业务场景:第一次跑 DeepSeek-R1,按博客/视频里看到的命令照搬,Ollama 直接回 file does not exist,没下任何东西。
  • 环境:Ollama v0.34.x,ollama pull <name>:<tag> 是拉模型的官方入口;tag 是命名空间 model:tag 里冒号右边的部分,区分大小写且必须与模型页一字不差。

StackTrace(堆栈日志)

pulling manifest
Error: pull model manifest: file does not exist

如果请求里带了不存在的模型名或错位的字符,Ollama 在解析 manifest 阶段就失败,连「开始下载」的进度条都不会出现。如果进度条走了一会再挂,多半是磁盘满或网络超时,不是这个错。

Reproduce(复现代码)

# 1) 大写 B:常见误写
ollama pull deepseek-r1:8B
# Error: pull model manifest: file does not exist

# 2) 自创的量化档:模型页根本没这个 tag
ollama pull deepseek-r1:8b-q8_0
# Error: pull model manifest: file does not exist

# 3) 跑/拉都报同一个错(首次拉模型也会触发)
ollama run deepseek-r1:32b-instruct-q5_K_M
# Error: pull model manifest: file does not exist

对照可用的命令:

ollama pull deepseek-r1:8b      # OK
ollama pull deepseek-r1:latest  # OK,与 8b 同源

Root Cause(根因分析)

Ollama 拉模型的流程是:先解析 model:tag → 向 registry 要 manifest → 按 manifest 列表拉 layer。Manifest 是「这个 tag 由哪几个权重/模板文件组成」的小型描述文件。file does not exist 出现在第一步,也就是 registry 端返回 404 后客户端把错误翻译成人话。

按踩坑频率排序,根因就三种。

一、tag 大小写或下划线写错

这是最高频的。社区案例里 ollama pull llama3.2:3B 失败而 llama3.2:3b 通过是同一种问题。Ollama 的 tag 解析是 exact string,没有“自动归一化大小写”这一步。同样的坑在量化档上更明显:Q4_K_M 与 q4_K_M、q4_k_m 在某些镜像源里会被当成不同 tag 处理。

deepseek-r1 系列 tag 全部小写:1.5b/7b/8b/14b/32b/70b/671b。8B、8b-instruct 都不存在。

二、tag 在 registry 里压根没发布

模型不一定发布了你期望的那个 tag。deepseek-r1 在 Ollama 库页只发了这 7 个数字 tag,没有 -q4_K_M 后缀、没有 -chat 后缀、没有 -instruct 后缀。llama3.1:8b-instruct-q4_K_M 这种带详细后缀的写法是 llama.cpp / Hugging Face 那一套习惯,照搬到 Ollama 必然 manifest 缺失。

三、客户端打到了另一台机器

OLLAMA_HOST 一旦被改成另一台机器的 IP,本机 ollama pull 实际访问的是远端的 registry 视图。模型在远端没拉过、或者远端 registry 不可达,表现出来的都是 file does not exist。这种情况下 ollama list 在本机可能是空的,但其它机器上有。直接 ollama list 比对一下就能定位。

ollama create 出来的本地模型走另一条路,但同样会因为 FROM ./some-model.gguf 找不到本地文件而报同名错。

The Fix(解决方案)

第一步:复制模型页的精确 tag

打开 https://ollama.com/library/deepseek-r1 页面的 tags 列表,逐字复制。8b、14b、32b、70b、671b 这些数字 + b 的写法才对。

ollama pull deepseek-r1:8b

第二步:怀疑大小写就先试 latest

deepseek-r1:latest 是个稳定的别名,与 deepseek-r1:8b 同源(都是 DeepSeek-R1-0528-Qwen3-8B 的 Q4_K_M)。先跑 latest 验证服务可用,再去敲具体 tag:

ollama pull deepseek-r1:latest     # 验证用
ollama pull deepseek-r1:8b         # 精确 tag

第三步:拉之前查本地和远端

ollama list        # 本地已有什么
curl http://localhost:11434/api/tags   # 服务端视角

如果 OLLAMA_HOST 被改了,ollama list 只会列你配置的远端那台机器上的模型。本机命令行用默认 http://127.0.0.1:11434,远端的 OLLAMA_HOST 设置在另一个 shell 里跑着,两边各看各的。排查时把当前 shell 的环境也看一眼:env | grep OLLAMA。

第四步:模型确实要某个 tag 才存在时怎么办

Ollama 库里没有 deepseek-r1:14b-q5_K_M,但你就要 Q5_K_M。两个选项:

  • 直接拉 Hugging Face 上的 DeepSeek-R1-Distill-Qwen-14B-Q5_K_M.gguf,再用 Modelfile FROM ./xxx.gguf 创建本地 tag:
curl -L -o deepseek-r1-distill-qwen-14b-q5_k_m.gguf \
  https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B-GGUF/resolve/main/deepseek-r1-distill-qwen-14b-q5_k_m.gguf

cat > Modelfile <<'EOF'
FROM ./deepseek-r1-distill-qwen-14b-q5_k_m.gguf
PARAMETER num_ctx 4096
EOF

ollama create deepseek-r1:14b-q5_K_M -f Modelfile
ollama run deepseek-r1:14b-q5_K_M
  • 等 Ollama 官方加 tag(观察库页更新或 Ollama 官方博客的 release notes)。

ollama create 这条路在路径错(相对路径写错、./ 漏了)时也会触发同名错——Modelfile 的 FROM 必须能解析到具体文件,否则也会回退到 registry 查询。

References(参考来源)

最后更新于 2026-09-30

这篇帮到你了吗?

刚解决了一个棘手的报错?花两分钟记录下来,帮助下一个遇到同样问题的开发者。

贡献一条解法