Исправлена проблема, когда при первом запуске ALR требовалось вручную
All checks were successful
Pre-commit / pre-commit (push) Successful in 6m30s
Create Release / changelog (push) Successful in 3m31s

выполнять 'sudo alr fix' для создания необходимых директорий. Теперь
  директории /var/cache/alr и /tmp/alr создаются автоматически при первом
  использовании с правильными правами доступа.
This commit is contained in:
2025-11-23 15:16:22 +03:00
parent 107075e8ef
commit c9c8397856
5 changed files with 119 additions and 80 deletions

View File

@@ -31,6 +31,7 @@ import (
"xorm.io/xorm"
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
"gitea.plemya-x.ru/Plemya-x/ALR/internal/fsutils"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/alrsh"
)
@@ -57,19 +58,21 @@ func New(config Config) *Database {
func (d *Database) Connect() error {
dsn := d.config.GetPaths().DBPath
// Проверяем директорию для БД
dbDir := filepath.Dir(dsn)
if _, err := os.Stat(dbDir); err != nil {
if os.IsNotExist(err) {
// Директория не существует - не пытаемся создать
// Пользователь должен использовать alr fix для создания системных каталогов
return fmt.Errorf("cache directory does not exist, please run 'sudo alr fix' to create it")
// Директория не существует - создаем автоматически
slog.Info(gotext.Get("Cache directory does not exist, creating it"))
if err := fsutils.EnsureTempDirWithRootOwner(dbDir, 0o2775); err != nil {
return fmt.Errorf("failed to create cache directory: %w", err)
}
} else {
return fmt.Errorf("failed to check database directory: %w", err)
}
}
engine, err := xorm.NewEngine("sqlite", dsn)
// engine.SetLogLevel(log.LOG_DEBUG)
// engine.ShowSQL(true)