ollama

Форк
0
/
paths.go 
79 строк · 1.9 Кб
1
package lifecycle
2

3
import (
4
	"errors"
5
	"fmt"
6
	"log/slog"
7
	"os"
8
	"path/filepath"
9
	"runtime"
10
	"strings"
11
)
12

13
var (
14
	AppName    = "ollama app"
15
	CLIName    = "ollama"
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"
24
)
25

26
func init() {
27
	if runtime.GOOS == "windows" {
28
		AppName += ".exe"
29
		CLIName += ".exe"
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")
37

38
		// Executables are stored in APPDATA
39
		AppDir = filepath.Join(localAppData, "Programs", "Ollama")
40

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
44
		found := false
45
		for _, path := range paths {
46
			d, err := filepath.Abs(path)
47
			if err != nil {
48
				continue
49
			}
50
			if strings.EqualFold(AppDir, d) {
51
				found = true
52
			}
53
		}
54
		if !found {
55
			paths = append(paths, AppDir)
56

57
			pathVal := strings.Join(paths, ";")
58
			slog.Debug("setting PATH=" + pathVal)
59
			err := os.Setenv("PATH", pathVal)
60
			if err != nil {
61
				slog.Error(fmt.Sprintf("failed to update PATH: %s", err))
62
			}
63
		}
64

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))
70
			}
71
		}
72

73
	} else if runtime.GOOS == "darwin" {
74
		// TODO
75
		AppName += ".app"
76
		// } else if runtime.GOOS == "linux" {
77
		// TODO
78
	}
79
}
80

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.