浏览代码

make `blobs` directory if it does not exist

Jeffrey Morgan 1 年之前
父节点
当前提交
be233da145
共有 1 个文件被更改,包括 13 次插入1 次删除
  1. 13 1
      server/images.go

+ 13 - 1
server/images.go

@@ -287,9 +287,16 @@ func SaveLayers(layers []*LayerWithBuffer, fn func(status string), force bool) e
 		return err
 	}
 
+	dir := path.Join(home, ".ollama/models/blobs")
+
+	err = os.MkdirAll(dir, 0o700)
+	if err != nil {
+		return fmt.Errorf("make blobs directory: %w", err)
+	}
+
 	// Write each of the layers to disk
 	for _, layer := range layers {
-		fp := path.Join(home, ".ollama/models/blobs", layer.Digest)
+		fp := path.Join(dir, layer.Digest)
 
 		_, err = os.Stat(fp)
 		if os.IsNotExist(err) || force {
@@ -748,6 +755,11 @@ func downloadBlob(registryURL, repoName, digest, username, password string) erro
 		return fmt.Errorf("registry responded with code %d: %v", resp.StatusCode, string(body))
 	}
 
+	err = os.MkdirAll(path.Dir(fp), 0o700)
+	if err != nil {
+		return fmt.Errorf("make blobs directory: %w", err)
+	}
+
 	out, err := os.Create(fp)
 	if err != nil {
 		log.Printf("couldn't create %s", fp)