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,再用 ModelfileFROM ./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(參考來源)
- Fix common Ollama errors: 500, timeouts and stalled pullstroubleshooting-guide
- Ollama: pull model manifest: file does not existtroubleshooting-guide
- deepseek-r1 - Ollama Libraryollama-docs
