|
@@ -287,9 +287,16 @@ func SaveLayers(layers []*LayerWithBuffer, fn func(status string), force bool) e
|
|
return err
|
|
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
|
|
// Write each of the layers to disk
|
|
for _, layer := range layers {
|
|
for _, layer := range layers {
|
|
- fp := path.Join(home, ".ollama/models/blobs", layer.Digest)
|
|
|
|
|
|
+ fp := path.Join(dir, layer.Digest)
|
|
|
|
|
|
_, err = os.Stat(fp)
|
|
_, err = os.Stat(fp)
|
|
if os.IsNotExist(err) || force {
|
|
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))
|
|
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)
|
|
out, err := os.Create(fp)
|
|
if err != nil {
|
|
if err != nil {
|
|
log.Printf("couldn't create %s", fp)
|
|
log.Printf("couldn't create %s", fp)
|