14
AppName = "ollama app"
16
AppDir = "/opt/Ollama"
17
AppDataDir = "/opt/Ollama"
18
// TODO - should there be a distinct log dir?
19
UpdateStageDir = "/tmp"
20
AppLogFile = "/tmp/ollama_app.log"
21
ServerLogFile = "/tmp/ollama.log"
22
UpgradeLogFile = "/tmp/ollama_update.log"
23
Installer = "OllamaSetup.exe"
27
if runtime.GOOS == "windows" {
30
// Logs, configs, downloads go to LOCALAPPDATA
31
localAppData := os.Getenv("LOCALAPPDATA")
32
AppDataDir = filepath.Join(localAppData, "Ollama")
33
UpdateStageDir = filepath.Join(AppDataDir, "updates")
34
AppLogFile = filepath.Join(AppDataDir, "app.log")
35
ServerLogFile = filepath.Join(AppDataDir, "server.log")
36
UpgradeLogFile = filepath.Join(AppDataDir, "upgrade.log")
38
// Executables are stored in APPDATA
39
AppDir = filepath.Join(localAppData, "Programs", "Ollama")
41
// Make sure we have PATH set correctly for any spawned children
42
paths := strings.Split(os.Getenv("PATH"), ";")
43
// Start with whatever we find in the PATH/LD_LIBRARY_PATH
45
for _, path := range paths {
46
d, err := filepath.Abs(path)
50
if strings.EqualFold(AppDir, d) {
55
paths = append(paths, AppDir)
57
pathVal := strings.Join(paths, ";")
58
slog.Debug("setting PATH=" + pathVal)
59
err := os.Setenv("PATH", pathVal)
61
slog.Error(fmt.Sprintf("failed to update PATH: %s", err))
65
// Make sure our logging dir exists
66
_, err := os.Stat(AppDataDir)
67
if errors.Is(err, os.ErrNotExist) {
68
if err := os.MkdirAll(AppDataDir, 0o755); err != nil {
69
slog.Error(fmt.Sprintf("create ollama dir %s: %v", AppDataDir, err))
73
} else if runtime.GOOS == "darwin" {
76
// } else if runtime.GOOS == "linux" {