Оптимизация сборки зависимостей и исправление кеширования
All checks were successful
Create Release / changelog (push) Successful in 2m26s

- Добавлено полное разрешение дерева зависимостей перед сборкой
- Общие зависимости теперь собираются только один раз
- Исправлена работа кеша для подпакетов
- Исправлена обработка системных зависимостей
This commit is contained in:
2025-12-08 21:58:41 +00:00
parent 6529094fa7
commit d7e910c06c
9 changed files with 949 additions and 417 deletions

View File

@@ -12,7 +12,7 @@
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"> <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
<text x="37" y="15" fill="#010101" fill-opacity=".3">ru translate</text> <text x="37" y="15" fill="#010101" fill-opacity=".3">ru translate</text>
<text x="37" y="14">ru translate</text> <text x="37" y="14">ru translate</text>
<text x="100" y="15" fill="#010101" fill-opacity=".3">100.00%</text> <text x="100" y="15" fill="#010101" fill-opacity=".3">97.00%</text>
<text x="100" y="14">100.00%</text> <text x="100" y="14">97.00%</text>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 942 B

After

Width:  |  Height:  |  Size: 940 B

View File

@@ -565,79 +565,173 @@ func (b *Builder) BuildALRDeps(
}, },
depends []string, depends []string,
) (buildDeps []*BuiltDep, repoDeps []string, err error) { ) (buildDeps []*BuiltDep, repoDeps []string, err error) {
if len(depends) > 0 { if len(depends) == 0 {
slog.Info(gotext.Get("Installing dependencies")) return nil, nil, nil
}
found, notFound, err := b.repos.FindPkgs(ctx, depends) // Поиск зависимостей
if err != nil { slog.Info(gotext.Get("Installing dependencies"))
return nil, nil, fmt.Errorf("failed FindPkgs: %w", err)
} // Шаг 1: Рекурсивно разрешаем ВСЕ зависимости
repoDeps = notFound depTree, systemDeps, err := b.ResolveDependencyTree(ctx, input, depends)
if err != nil {
// Если для некоторых пакетов есть несколько опций, упрощаем их все в один срез return nil, nil, fmt.Errorf("failed to resolve dependency tree: %w", err)
// Для зависимостей указываем isDependency = true }
pkgs := cliutils.FlattenPkgsWithContext(
ctx, // Системные зависимости возвращаем как repoDeps
found, repoDeps = systemDeps
"install",
input.BuildOpts().Interactive, // Шаг 2: Собираем список всех пакетов из дерева для топологической сортировки
true, allFound := make(map[string][]alrsh.Package)
) for baseName, node := range depTree {
allFound[baseName] = []alrsh.Package{*node.Package}
pkgs, err = b.installerExecutor.FilterPackagesByVersion(ctx, pkgs, input.OSRelease()) }
if err != nil {
return nil, nil, fmt.Errorf("failed to filter packages by version: %w", err) // Шаг 3: Топологическая сортировка (от корней к листьям)
} sortedPkgs, err := TopologicalSort(depTree, allFound)
if err != nil {
type item struct { return nil, nil, fmt.Errorf("failed to sort dependencies: %w", err)
pkg *alrsh.Package }
packages []string
} // Шаг 4: Собираем пакеты в правильном порядке, проверяя кеш
pkgsMap := make(map[string]*item) for _, basePkgName := range sortedPkgs {
for _, pkg := range pkgs { node := depTree[basePkgName]
name := pkg.BasePkgName if node == nil {
if name == "" { continue
name = pkg.Name }
}
if pkgsMap[name] == nil { pkg := node.Package
pkgsMap[name] = &item{
pkg: &pkg, // Находим ВСЕ подпакеты с этим BasePkgName
} allSubpkgs, err := b.findAllSubpackages(ctx, basePkgName, pkg.Repository)
} if err != nil {
pkgsMap[name].packages = append( return nil, nil, fmt.Errorf("failed to find subpackages for %s: %w", basePkgName, err)
pkgsMap[name].packages, }
pkg.Name,
) // Проверяем кеш для ВСЕХ подпакетов
} scriptInfo := b.scriptResolver.ResolveScript(ctx, pkg)
buildInput := &BuildInput{
for basePkgName := range pkgsMap { script: scriptInfo.Script,
pkg := pkgsMap[basePkgName].pkg repository: scriptInfo.Repository,
res, err := b.BuildPackageFromDb( packages: allSubpkgs,
ctx, pkgFormat: input.PkgFormat(),
&BuildPackageFromDbArgs{ opts: input.BuildOpts(),
Package: pkg, info: input.OSRelease(),
Packages: pkgsMap[basePkgName].packages, }
BuildArgs: BuildArgs{
Opts: input.BuildOpts(), cachedDeps, allInCache, err := b.checkCacheForAllSubpackages(ctx, buildInput, basePkgName, allSubpkgs)
Info: input.OSRelease(), if err != nil {
PkgFormat_: input.PkgFormat(), return nil, nil, err
}, }
},
) if allInCache {
if err != nil { // Все подпакеты в кеше, используем их
return nil, nil, fmt.Errorf("failed build package from db: %w", err) buildDeps = append(buildDeps, cachedDeps...)
} continue
}
buildDeps = append(buildDeps, res...)
} // Собираем пакет (без рекурсивной сборки зависимостей, так как они уже собраны)
res, err := b.BuildPackageFromDb(
ctx,
&BuildPackageFromDbArgs{
Package: pkg,
Packages: allSubpkgs,
BuildArgs: BuildArgs{
Opts: input.BuildOpts(),
Info: input.OSRelease(),
PkgFormat_: input.PkgFormat(),
},
},
)
if err != nil {
return nil, nil, fmt.Errorf("failed build package from db: %w", err)
}
buildDeps = append(buildDeps, res...)
} }
repoDeps = removeDuplicates(repoDeps)
buildDeps = removeDuplicates(buildDeps) buildDeps = removeDuplicates(buildDeps)
return buildDeps, repoDeps, nil return buildDeps, repoDeps, nil
} }
// findAllSubpackages находит все подпакеты для базового пакета
func (b *Builder) findAllSubpackages(ctx context.Context, basePkgName, repository string) ([]string, error) {
// Запрашиваем все пакеты с этим basepkg_name
pkgs, _, err := b.repos.FindPkgs(ctx, []string{basePkgName})
if err != nil {
return nil, err
}
var subpkgs []string
seen := make(map[string]bool)
for _, pkgList := range pkgs {
for _, pkg := range pkgList {
// Проверяем, что это пакет из нужного репозитория
if pkg.Repository == repository {
pkgBase := pkg.BasePkgName
if pkgBase == "" {
pkgBase = pkg.Name
}
// Добавляем только если это пакет с нужным BasePkgName
if pkgBase == basePkgName && !seen[pkg.Name] {
subpkgs = append(subpkgs, pkg.Name)
seen[pkg.Name] = true
}
}
}
}
return subpkgs, nil
}
// checkCacheForAllSubpackages проверяет кеш для всех подпакетов
func (b *Builder) checkCacheForAllSubpackages(
ctx context.Context,
buildInput *BuildInput,
basePkgName string,
subpkgs []string,
) ([]*BuiltDep, bool, error) {
var cachedDeps []*BuiltDep
allInCache := true
// Получаем информацию обо всех подпакетах
pkgsInfo, _, err := b.repos.FindPkgs(ctx, subpkgs)
if err != nil {
return nil, false, fmt.Errorf("failed to find subpackages info: %w", err)
}
for _, pkgName := range subpkgs {
var pkgForCheck *alrsh.Package
// Находим Package для подпакета
if pkgList, ok := pkgsInfo[pkgName]; ok && len(pkgList) > 0 {
pkgForCheck = &pkgList[0]
}
if pkgForCheck != nil {
pkgPath, found, err := b.cacheExecutor.CheckForBuiltPackage(ctx, buildInput, pkgForCheck)
if err != nil {
return nil, false, fmt.Errorf("failed to check cache: %w", err)
}
if found {
slog.Info(gotext.Get("Using cached package"), "name", pkgName, "path", pkgPath)
cachedDeps = append(cachedDeps, &BuiltDep{
Name: pkgName,
Path: pkgPath,
})
} else {
allInCache = false
break
}
}
}
return cachedDeps, allInCache && len(cachedDeps) > 0, nil
}
func (i *Builder) installBuildDeps( func (i *Builder) installBuildDeps(
ctx context.Context, ctx context.Context,
input interface { input interface {

View File

@@ -40,7 +40,12 @@ func (c *Cache) CheckForBuiltPackage(
return "", false, err return "", false, err
} }
pkgPath := filepath.Join(getBaseDir(c.cfg, vars.Name), filename) // Для подпакетов используем BasePkgName, чтобы искать в правильной директории
baseName := vars.BasePkgName
if baseName == "" {
baseName = vars.Name
}
pkgPath := filepath.Join(getBaseDir(c.cfg, baseName), filename)
_, err = os.Stat(pkgPath) _, err = os.Stat(pkgPath)
if err != nil { if err != nil {

View File

@@ -0,0 +1,193 @@
// ALR - Any Linux Repository
// Copyright (C) 2025 The ALR Authors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
package build
import (
"context"
"fmt"
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/alrsh"
)
// DependencyNode представляет узел в дереве зависимостей
type DependencyNode struct {
Package *alrsh.Package
BasePkgName string
Dependencies []string // Имена зависимостей
}
// ResolveDependencyTree рекурсивно разрешает все зависимости и возвращает
// плоский список всех уникальных пакетов, необходимых для сборки
// и список системных зависимостей (не найденных в ALR-репозиториях)
func (b *Builder) ResolveDependencyTree(
ctx context.Context,
input interface {
OsInfoProvider
PkgFormatProvider
},
initialPkgs []string,
) (map[string]*DependencyNode, []string, error) {
resolved := make(map[string]*DependencyNode)
visited := make(map[string]bool)
systemDeps := make(map[string]bool) // Для дедупликации системных зависимостей
var resolve func(pkgNames []string) error
resolve = func(pkgNames []string) error {
if len(pkgNames) == 0 {
return nil
}
// Находим пакеты
found, notFound, err := b.repos.FindPkgs(ctx, pkgNames)
if err != nil {
return fmt.Errorf("failed to find packages: %w", err)
}
// Собираем системные зависимости (не найденные в ALR)
for _, pkgName := range notFound {
systemDeps[pkgName] = true
}
// Обрабатываем найденные пакеты
for pkgName, pkgList := range found {
if visited[pkgName] {
continue
}
visited[pkgName] = true
// Берем первый пакет из списка (или можно добавить выбор пользователя)
if len(pkgList) == 0 {
continue
}
pkg := pkgList[0]
// Определяем базовое имя пакета
baseName := pkg.BasePkgName
if baseName == "" {
baseName = pkg.Name
}
// Если уже обработали этот базовый пакет, пропускаем
if resolved[baseName] != nil {
continue
}
// Получаем зависимости для этого дистрибутива
// Пакет из БД уже содержит разрешенные значения для текущего дистрибутива
deps := pkg.Depends.Resolved()
buildDeps := pkg.BuildDepends.Resolved()
// Объединяем зависимости
allDeps := append([]string{}, deps...)
allDeps = append(allDeps, buildDeps...)
// Добавляем узел в resolved
resolved[baseName] = &DependencyNode{
Package: &pkg,
BasePkgName: baseName,
Dependencies: allDeps,
}
// Рекурсивно разрешаем зависимости
if len(allDeps) > 0 {
if err := resolve(allDeps); err != nil {
return err
}
}
}
return nil
}
// Начинаем разрешение с начальных пакетов
if err := resolve(initialPkgs); err != nil {
return nil, nil, err
}
// Преобразуем map в слайс для системных зависимостей
var systemDepsList []string
for dep := range systemDeps {
systemDepsList = append(systemDepsList, dep)
}
return resolved, systemDepsList, nil
}
// TopologicalSort выполняет топологическую сортировку пакетов по зависимостям
// Возвращает список базовых имен пакетов в порядке сборки (от корней к листьям)
func TopologicalSort(nodes map[string]*DependencyNode, allPkgs map[string][]alrsh.Package) ([]string, error) {
// Список для результата
var result []string
// Множество посещенных узлов
visited := make(map[string]bool)
// Множество узлов в текущем пути (для обнаружения циклов)
inStack := make(map[string]bool)
var visit func(basePkgName string) error
visit = func(basePkgName string) error {
if visited[basePkgName] {
return nil
}
if inStack[basePkgName] {
return fmt.Errorf("circular dependency detected: %s", basePkgName)
}
node := nodes[basePkgName]
if node == nil {
// Это системный пакет, игнорируем
return nil
}
inStack[basePkgName] = true
// Посещаем все зависимости
for _, dep := range node.Dependencies {
// Находим базовое имя для зависимости
depBaseName := dep
// Проверяем, есть ли этот пакет в allPkgs
if pkgs, ok := allPkgs[dep]; ok && len(pkgs) > 0 {
if pkgs[0].BasePkgName != "" {
depBaseName = pkgs[0].BasePkgName
}
}
if err := visit(depBaseName); err != nil {
return err
}
}
inStack[basePkgName] = false
visited[basePkgName] = true
result = append(result, basePkgName)
return nil
}
// Посещаем все узлы
for basePkgName := range nodes {
if err := visit(basePkgName); err != nil {
return nil, err
}
}
return result, nil
}

View File

@@ -42,6 +42,15 @@ func getDirs(
cfg Config, cfg Config,
scriptPath string, scriptPath string,
basePkg string, basePkg string,
) (types.Directories, error) {
return getDirsForPackage(cfg, scriptPath, basePkg, "")
}
func getDirsForPackage(
cfg Config,
scriptPath string,
basePkg string,
packageName string,
) (types.Directories, error) { ) (types.Directories, error) {
pkgsDir := cfg.GetPaths().PkgsDir pkgsDir := cfg.GetPaths().PkgsDir
@@ -50,10 +59,18 @@ func getDirs(
return types.Directories{}, err return types.Directories{}, err
} }
baseDir := filepath.Join(pkgsDir, basePkg) baseDir := filepath.Join(pkgsDir, basePkg)
// Для подпакетов используем отдельную директорию pkg_<имя_подпакета>
// Для обычных пакетов используем просто pkg
pkgDirName := "pkg"
if packageName != "" {
pkgDirName = "pkg_" + packageName
}
return types.Directories{ return types.Directories{
BaseDir: getBaseDir(cfg, basePkg), BaseDir: getBaseDir(cfg, basePkg),
SrcDir: getSrcDir(cfg, basePkg), SrcDir: getSrcDir(cfg, basePkg),
PkgDir: filepath.Join(baseDir, "pkg"), PkgDir: filepath.Join(baseDir, pkgDirName),
ScriptDir: getScriptDir(scriptPath), ScriptDir: getScriptDir(scriptPath),
}, nil }, nil
} }

View File

@@ -130,12 +130,34 @@ func (e *LocalScriptExecutor) ExecuteSecondPass(
packageName = vars.Name packageName = vars.Name
} }
// Для каждого подпакета создаём отдельную директорию
pkgDirs, err := getDirsForPackage(e.cfg, sf.Path(), basePkg, packageName)
if err != nil {
return nil, err
}
// Создаём директорию для подпакета
if err := os.MkdirAll(pkgDirs.PkgDir, 0o755); err != nil {
return nil, err
}
// Обновляем переменную окружения $pkgdir для текущего подпакета
setPkgdirCmd := fmt.Sprintf("pkgdir='%s'", pkgDirs.PkgDir)
setPkgdirScript, err := syntax.NewParser().Parse(strings.NewReader(setPkgdirCmd), "")
if err != nil {
return nil, err
}
err = runner.Run(ctx, setPkgdirScript)
if err != nil {
return nil, err
}
pkgFormat := input.pkgFormat pkgFormat := input.pkgFormat
funcOut, err := e.ExecutePackageFunctions( funcOut, err := e.ExecutePackageFunctions(
ctx, ctx,
dec, dec,
dirs, pkgDirs,
packageName, packageName,
) )
if err != nil { if err != nil {
@@ -148,7 +170,7 @@ func (e *LocalScriptExecutor) ExecuteSecondPass(
ctx, ctx,
input, input,
vars, vars,
dirs, pkgDirs,
append( append(
repoDeps, repoDeps,
GetBuiltName(builtDeps)..., GetBuiltName(builtDeps)...,
@@ -165,7 +187,7 @@ func (e *LocalScriptExecutor) ExecuteSecondPass(
} }
pkgName := packager.ConventionalFileName(pkgInfo) // Получаем имя файла пакета pkgName := packager.ConventionalFileName(pkgInfo) // Получаем имя файла пакета
pkgPath := filepath.Join(dirs.BaseDir, pkgName) // Определяем путь к пакету pkgPath := filepath.Join(pkgDirs.BaseDir, pkgName) // Определяем путь к пакету
slog.Info(gotext.Get("Creating package file"), "path", pkgPath, "name", pkgName) slog.Info(gotext.Get("Creating package file"), "path", pkgPath, "name", pkgName)

View File

@@ -34,27 +34,31 @@ msgstr ""
msgid "Error getting working directory" msgid "Error getting working directory"
msgstr "" msgstr ""
#: build.go:117 #: build.go:111
msgid "Cannot get absolute script path" msgid "Cannot get absolute script path"
msgstr "" msgstr ""
#: build.go:143 #: build.go:137
msgid "Package not found" msgid "Package not found"
msgstr "" msgstr ""
#: build.go:156 #: build.go:150
msgid "Nothing to build" msgid "Nothing to build"
msgstr "" msgstr ""
#: build.go:213 #: build.go:195
msgid "Error building package" msgid "Error building package"
msgstr "" msgstr ""
#: build.go:220 #: build.go:203
msgid "Package file already moved or removed, skipping"
msgstr ""
#: build.go:209
msgid "Error moving the package" msgid "Error moving the package"
msgstr "" msgstr ""
#: build.go:224 #: build.go:213
msgid "Done" msgid "Done"
msgstr "" msgstr ""
@@ -62,71 +66,123 @@ msgstr ""
msgid "Manage config" msgid "Manage config"
msgstr "" msgstr ""
#: config.go:48 #: config.go:50
msgid "Shows a list of commands or help for one command"
msgstr ""
#: config.go:66
msgid "Show config" msgid "Show config"
msgstr "" msgstr ""
#: config.go:84 #: config.go:103
msgid "Set config value" msgid "Set config value"
msgstr "" msgstr ""
#: config.go:85 #: config.go:104
msgid "<key> <value>" msgid "<key> <value>"
msgstr "" msgstr ""
#: config.go:118 config.go:126 #: config.go:137 config.go:145 config.go:162
msgid "invalid boolean value for %s: %s" msgid "invalid boolean value for %s: %s"
msgstr "" msgstr ""
#: config.go:141 #: config.go:166
msgid "use 'repo add/remove' commands to manage repositories" msgid "use 'repo add/remove' commands to manage repositories"
msgstr "" msgstr ""
#: config.go:143 config.go:221 #: config.go:168 config.go:248
msgid "unknown config key: %s" msgid "unknown config key: %s"
msgstr "" msgstr ""
#: config.go:147 #: config.go:172
msgid "failed to save config" msgid "failed to save config"
msgstr "" msgstr ""
#: config.go:150 #: config.go:175
msgid "Successfully set %s = %s" msgid "Successfully set %s = %s"
msgstr "" msgstr ""
#: config.go:159 #: config.go:184
msgid "Get config value" msgid "Get config value"
msgstr "" msgstr ""
#: config.go:160 #: config.go:185
msgid "<key>" msgid "<key>"
msgstr "" msgstr ""
#: fix.go:39 #: fix.go:55
msgid "Attempt to fix problems with ALR" msgid "Attempt to fix problems with ALR"
msgstr "" msgstr ""
#: fix.go:60 #: fix.go:75
msgid "Clearing cache directory" msgid "Clearing cache and temporary directories"
msgstr ""
#: fix.go:64
msgid "Unable to open cache directory"
msgstr ""
#: fix.go:70
msgid "Unable to read cache directory contents"
msgstr "" msgstr ""
#: fix.go:82 #: fix.go:82
msgid "Cache directory does not exist, will create it"
msgstr ""
#: fix.go:84
msgid "Unable to open cache directory"
msgstr ""
#: fix.go:91
msgid "Unable to read cache directory contents"
msgstr ""
#: fix.go:106
msgid "Unable to remove cache item (%s) as current user, trying with sudo"
msgstr ""
#: fix.go:111
msgid "Unable to remove cache item (%s)" msgid "Unable to remove cache item (%s)"
msgstr "" msgstr ""
#: fix.go:86 #: fix.go:119
msgid "Clearing temporary directory"
msgstr ""
#: fix.go:126
msgid "Unable to remove temporary directory as current user, trying with sudo"
msgstr ""
#: fix.go:129
msgid "Unable to remove temporary directory"
msgstr ""
#: fix.go:137
msgid "Unable to create temporary directory"
msgstr ""
#: fix.go:144
msgid "Unable to create download directory"
msgstr ""
#: fix.go:151
msgid "Unable to create packages directory"
msgstr ""
#: fix.go:156
msgid "Fixing permissions on temporary files"
msgstr ""
#: fix.go:164
msgid "Unable to fix file ownership"
msgstr ""
#: fix.go:169
msgid "Unable to fix file permissions"
msgstr ""
#: fix.go:174
msgid "Rebuilding cache" msgid "Rebuilding cache"
msgstr "" msgstr ""
#: fix.go:90 #: fix.go:177
msgid "Creating cache directory"
msgstr ""
#: fix.go:180
msgid "Unable to create new cache directory" msgid "Unable to create new cache directory"
msgstr "" msgstr ""
@@ -138,55 +194,67 @@ msgstr ""
msgid "Generate a ALR script for a pip module" msgid "Generate a ALR script for a pip module"
msgstr "" msgstr ""
#: gen.go:66
msgid "Generate a ALR script for an AUR package"
msgstr ""
#: gen.go:72
msgid "Name of the AUR package"
msgstr ""
#: gen.go:77
msgid "Version of the package (optional, uses latest if not specified)"
msgstr ""
#: helper.go:42 #: helper.go:42
msgid "List all the available helper commands" msgid "List all the available helper commands"
msgstr "" msgstr ""
#: helper.go:54 #: helper.go:69
msgid "Run a ALR helper command" msgid "Run a ALR helper command"
msgstr "" msgstr ""
#: helper.go:61 #: helper.go:76
msgid "The directory that the install commands will install to" msgid "The directory that the install commands will install to"
msgstr "" msgstr ""
#: helper.go:74 helper.go:75 #: helper.go:89 helper.go:90
msgid "No such helper command" msgid "No such helper command"
msgstr "" msgstr ""
#: helper.go:85 #: helper.go:100
msgid "Error parsing os-release file" msgid "Error parsing os-release file"
msgstr "" msgstr ""
#: info.go:42 #: info.go:41
msgid "Print information about a package" msgid "Print information about a package"
msgstr "" msgstr ""
#: info.go:47 #: info.go:46
msgid "Show all information, not just for the current distro" msgid "Show all information, not just for the current distro"
msgstr "" msgstr ""
#: info.go:68 #: info.go:64
msgid "Error getting packages" msgid "Error getting packages"
msgstr "" msgstr ""
#: info.go:83 #: info.go:77
msgid "Command info expected at least 1 argument, got %d" msgid "Command info expected at least 1 argument, got %d"
msgstr "" msgstr ""
#: info.go:104 #: info.go:98
msgid "Error finding packages" msgid "Error finding packages"
msgstr "" msgstr ""
#: info.go:118 #: info.go:112
msgid "Can't detect system language" msgid "Can't detect system language"
msgstr "" msgstr ""
#: info.go:134 #: info.go:128
msgid "Error resolving overrides" msgid "Error resolving overrides"
msgstr "" msgstr ""
#: info.go:143 #: info.go:137
msgid "Error encoding script variables" msgid "Error encoding script variables"
msgstr "" msgstr ""
@@ -198,43 +266,47 @@ msgstr ""
msgid "Command install expected at least 1 argument, got %d" msgid "Command install expected at least 1 argument, got %d"
msgstr "" msgstr ""
#: install.go:113 #: install.go:107
msgid "Error when installing the package" msgid "Error when installing the package"
msgstr "" msgstr ""
#: install.go:151 #: install.go:142
msgid "Remove an installed package" msgid "Remove an installed package"
msgstr "" msgstr ""
#: install.go:170 #: install.go:161
msgid "Error listing installed packages" msgid "Error listing installed packages"
msgstr "" msgstr ""
#: install.go:199 #: install.go:190
msgid "Command remove expected at least 1 argument, got %d" msgid "Command remove expected at least 1 argument, got %d"
msgstr "" msgstr ""
#: install.go:214 #: install.go:205
msgid "Error removing packages" msgid "Error removing packages"
msgstr "" msgstr ""
#: internal/build/build.go:351 #: internal/build/build.go:342 internal/build/build.go:653
msgid "Using cached package"
msgstr ""
#: internal/build/build.go:357
msgid "Building package" msgid "Building package"
msgstr "" msgstr ""
#: internal/build/build.go:380 #: internal/build/build.go:386
msgid "The checksums array must be the same length as sources" msgid "The checksums array must be the same length as sources"
msgstr "" msgstr ""
#: internal/build/build.go:422 #: internal/build/build.go:438
msgid "Downloading sources" msgid "Downloading sources"
msgstr "" msgstr ""
#: internal/build/build.go:468 #: internal/build/build.go:484
msgid "Would you like to remove the build dependencies?" msgid "Would you like to remove the build dependencies?"
msgstr "" msgstr ""
#: internal/build/build.go:546 #: internal/build/build.go:569
msgid "Installing dependencies" msgid "Installing dependencies"
msgstr "" msgstr ""
@@ -272,22 +344,68 @@ msgstr ""
msgid "Applying FireJail integration" msgid "Applying FireJail integration"
msgstr "" msgstr ""
#: internal/build/script_executor.go:145 #: internal/build/installer.go:99
msgid ""
"Package %s is installed with older version %s, will rebuild with version %s"
msgstr ""
#: internal/build/installer.go:102
msgid "Package %s is already installed with version %s, skipping build"
msgstr ""
#: internal/build/installer.go:104
msgid ""
"Package %s is installed with newer version %s (repo has %s), skipping build"
msgstr ""
#: internal/build/script_executor.go:167
msgid "Building package metadata" msgid "Building package metadata"
msgstr "" msgstr ""
#: internal/build/script_executor.go:285 #: internal/build/script_executor.go:192
msgid "Creating package file"
msgstr ""
#: internal/build/script_executor.go:196
msgid "Failed to create package file"
msgstr ""
#: internal/build/script_executor.go:201
msgid "Packaging with nfpm"
msgstr ""
#: internal/build/script_executor.go:204
msgid "Failed to create package"
msgstr ""
#: internal/build/script_executor.go:208
msgid "Package created successfully"
msgstr ""
#: internal/build/script_executor.go:212
msgid "Package file not found after creation"
msgstr ""
#: internal/build/script_executor.go:215
msgid "Package file verified to exist"
msgstr ""
#: internal/build/script_executor.go:322
msgid "Executing prepare()" msgid "Executing prepare()"
msgstr "" msgstr ""
#: internal/build/script_executor.go:294 #: internal/build/script_executor.go:331
msgid "Executing build()" msgid "Executing build()"
msgstr "" msgstr ""
#: internal/build/script_executor.go:323 internal/build/script_executor.go:343 #: internal/build/script_executor.go:360 internal/build/script_executor.go:380
msgid "Executing %s()" msgid "Executing %s()"
msgstr "" msgstr ""
#: internal/cliutils/app_builder/builder.go:45
msgid "failed to close db"
msgstr ""
#: internal/cliutils/app_builder/builder.go:75 #: internal/cliutils/app_builder/builder.go:75
msgid "Error loading config" msgid "Error loading config"
msgstr "" msgstr ""
@@ -320,23 +438,25 @@ msgstr ""
msgid "User chose not to continue after reading script" msgid "User chose not to continue after reading script"
msgstr "" msgstr ""
#: internal/cliutils/prompt.go:111 #: internal/cliutils/prompt.go:123
msgid "Error prompting for choice of package" msgid "Error prompting for choice of package"
msgstr "" msgstr ""
#: internal/cliutils/prompt.go:135 #: internal/cliutils/prompt.go:175
msgid "Choose which package to %s" msgid "Choose which package to %s"
msgstr "" msgstr ""
#: internal/cliutils/prompt.go:156 #: internal/cliutils/prompt.go:196
msgid "Choose which optional package(s) to install" msgid "Choose which optional package(s) to install"
msgstr "" msgstr ""
#: internal/cliutils/template.go:74 internal/cliutils/template.go:93 #: internal/cliutils/template.go:74 internal/cliutils/template.go:93
#: internal/cliutils/template.go:126
msgid "NAME" msgid "NAME"
msgstr "" msgstr ""
#: internal/cliutils/template.go:74 internal/cliutils/template.go:94 #: internal/cliutils/template.go:74 internal/cliutils/template.go:94
#: internal/cliutils/template.go:126
msgid "USAGE" msgid "USAGE"
msgstr "" msgstr ""
@@ -344,15 +464,17 @@ msgstr ""
msgid "global options" msgid "global options"
msgstr "" msgstr ""
#: internal/cliutils/template.go:74 #: internal/cliutils/template.go:74 internal/cliutils/template.go:126
msgid "command" msgid "command"
msgstr "" msgstr ""
#: internal/cliutils/template.go:74 internal/cliutils/template.go:95 #: internal/cliutils/template.go:74 internal/cliutils/template.go:95
#: internal/cliutils/template.go:126
msgid "command options" msgid "command options"
msgstr "" msgstr ""
#: internal/cliutils/template.go:74 internal/cliutils/template.go:96 #: internal/cliutils/template.go:74 internal/cliutils/template.go:96
#: internal/cliutils/template.go:126
msgid "arguments" msgid "arguments"
msgstr "" msgstr ""
@@ -361,14 +483,15 @@ msgid "VERSION"
msgstr "" msgstr ""
#: internal/cliutils/template.go:74 internal/cliutils/template.go:98 #: internal/cliutils/template.go:74 internal/cliutils/template.go:98
#: internal/cliutils/template.go:126
msgid "DESCRIPTION" msgid "DESCRIPTION"
msgstr "" msgstr ""
#: internal/cliutils/template.go:74 #: internal/cliutils/template.go:74 internal/cliutils/template.go:126
msgid "AUTHOR" msgid "AUTHOR"
msgstr "" msgstr ""
#: internal/cliutils/template.go:74 #: internal/cliutils/template.go:74 internal/cliutils/template.go:126
msgid "COMMANDS" msgid "COMMANDS"
msgstr "" msgstr ""
@@ -376,7 +499,7 @@ msgstr ""
msgid "GLOBAL OPTIONS" msgid "GLOBAL OPTIONS"
msgstr "" msgstr ""
#: internal/cliutils/template.go:74 #: internal/cliutils/template.go:74 internal/cliutils/template.go:126
msgid "COPYRIGHT" msgid "COPYRIGHT"
msgstr "" msgstr ""
@@ -385,6 +508,7 @@ msgid "CATEGORY"
msgstr "" msgstr ""
#: internal/cliutils/template.go:99 internal/cliutils/template.go:100 #: internal/cliutils/template.go:99 internal/cliutils/template.go:100
#: internal/cliutils/template.go:126
msgid "OPTIONS" msgid "OPTIONS"
msgstr "" msgstr ""
@@ -394,11 +518,15 @@ msgid ""
"instead!" "instead!"
msgstr "" msgstr ""
#: internal/db/db.go:76 #: internal/db/db.go:67
msgid "Cache directory does not exist, creating it"
msgstr ""
#: internal/db/db.go:95
msgid "Database version mismatch; resetting" msgid "Database version mismatch; resetting"
msgstr "" msgstr ""
#: internal/db/db.go:82 #: internal/db/db.go:101
msgid "" msgid ""
"Database version does not exist. Run alr fix if something isn't working." "Database version does not exist. Run alr fix if something isn't working."
msgstr "" msgstr ""
@@ -433,43 +561,55 @@ msgid ""
"updating ALR if something doesn't work." "updating ALR if something doesn't work."
msgstr "" msgstr ""
#: internal/utils/cmd.go:97 #: internal/repos/pull.go:423
msgid "Error on dropping capabilities" msgid "Failed to get deleted file from old commit"
msgstr "" msgstr ""
#: internal/utils/cmd.go:164 #: internal/repos/pull.go:429
msgid "You need to be a %s member to perform this action" msgid "Failed to read deleted file"
msgstr "" msgstr ""
#: internal/utils/cmd.go:200 #: internal/repos/pull.go:448
msgid "Failed to get updated file from new commit"
msgstr ""
#: internal/repos/pull.go:454
msgid "Failed to read updated file"
msgstr ""
#: internal/repos/pull.go:508
msgid "No alr.sh files found in repository"
msgstr ""
#: internal/utils/cmd.go:54
msgid "You need to be root to perform this action" msgid "You need to be root to perform this action"
msgstr "" msgstr ""
#: list.go:45 #: list.go:44
msgid "List ALR repo packages" msgid "List ALR repo packages"
msgstr "" msgstr ""
#: list.go:59 #: list.go:58
msgid "Format output using a Go template" msgid "Format output using a Go template"
msgstr "" msgstr ""
#: list.go:91 #: list.go:87
msgid "Error getting packages for upgrade" msgid "Error getting packages for upgrade"
msgstr "" msgstr ""
#: list.go:94 #: list.go:90
msgid "No packages for upgrade" msgid "No packages for upgrade"
msgstr "" msgstr ""
#: list.go:104 list.go:201 #: list.go:100 list.go:197
msgid "Error parsing format template" msgid "Error parsing format template"
msgstr "" msgstr ""
#: list.go:110 list.go:205 #: list.go:106 list.go:201
msgid "Error executing template" msgid "Error executing template"
msgstr "" msgstr ""
#: list.go:164 #: list.go:160
msgid "Failed to parse release" msgid "Failed to parse release"
msgstr "" msgstr ""
@@ -477,19 +617,19 @@ msgstr ""
msgid "Print the current ALR version and exit" msgid "Print the current ALR version and exit"
msgstr "" msgstr ""
#: main.go:61 #: main.go:77
msgid "Arguments to be passed on to the package manager" msgid "Arguments to be passed on to the package manager"
msgstr "" msgstr ""
#: main.go:67 #: main.go:83
msgid "Enable interactive questions and prompts" msgid "Enable interactive questions and prompts"
msgstr "" msgstr ""
#: main.go:148 #: main.go:165
msgid "Show help" msgid "Show help"
msgstr "" msgstr ""
#: main.go:152 #: main.go:169
msgid "Error while running app" msgid "Error while running app"
msgstr "" msgstr ""
@@ -525,124 +665,124 @@ msgstr ""
msgid "Manage repos" msgid "Manage repos"
msgstr "" msgstr ""
#: repo.go:56 repo.go:625 #: repo.go:74 repo.go:658
msgid "Remove an existing repository" msgid "Remove an existing repository"
msgstr "" msgstr ""
#: repo.go:58 repo.go:521 #: repo.go:76 repo.go:554
msgid "<name>" msgid "<name>"
msgstr "" msgstr ""
#: repo.go:103 repo.go:465 repo.go:568 #: repo.go:121 repo.go:498 repo.go:601
msgid "Repo \"%s\" does not exist" msgid "Repo \"%s\" does not exist"
msgstr "" msgstr ""
#: repo.go:110 #: repo.go:128
msgid "Error removing repo directory" msgid "Error removing repo directory"
msgstr "" msgstr ""
#: repo.go:114 repo.go:195 repo.go:253 repo.go:316 repo.go:389 repo.go:504 #: repo.go:132 repo.go:210 repo.go:268 repo.go:331 repo.go:422 repo.go:537
#: repo.go:576 #: repo.go:609
msgid "Error saving config" msgid "Error saving config"
msgstr "" msgstr ""
#: repo.go:133 #: repo.go:148
msgid "Error removing packages from database" msgid "Error removing packages from database"
msgstr "" msgstr ""
#: repo.go:144 repo.go:595 #: repo.go:159 repo.go:628
msgid "Add a new repository" msgid "Add a new repository"
msgstr "" msgstr ""
#: repo.go:145 repo.go:270 repo.go:345 repo.go:402 #: repo.go:160 repo.go:285 repo.go:378 repo.go:435
msgid "<name> <url>" msgid "<name> <url>"
msgstr "" msgstr ""
#: repo.go:170 #: repo.go:185
msgid "Repo \"%s\" already exists" msgid "Repo \"%s\" already exists"
msgstr "" msgstr ""
#: repo.go:206 #: repo.go:221
msgid "Set the reference of the repository" msgid "Set the reference of the repository"
msgstr "" msgstr ""
#: repo.go:207 #: repo.go:222
msgid "<name> <ref>" msgid "<name> <ref>"
msgstr "" msgstr ""
#: repo.go:269 #: repo.go:284
msgid "Set the main url of the repository" msgid "Set the main url of the repository"
msgstr "" msgstr ""
#: repo.go:332 #: repo.go:347
msgid "Manage mirrors of repos" msgid "Manage mirrors of repos"
msgstr "" msgstr ""
#: repo.go:344 #: repo.go:377
msgid "Add a mirror URL to repository" msgid "Add a mirror URL to repository"
msgstr "" msgstr ""
#: repo.go:401 #: repo.go:434
msgid "Remove mirror from the repository" msgid "Remove mirror from the repository"
msgstr "" msgstr ""
#: repo.go:420 #: repo.go:453
msgid "Ignore if mirror does not exist" msgid "Ignore if mirror does not exist"
msgstr "" msgstr ""
#: repo.go:425 #: repo.go:458
msgid "Match partial URL (e.g., github.com instead of full URL)" msgid "Match partial URL (e.g., github.com instead of full URL)"
msgstr "" msgstr ""
#: repo.go:490 #: repo.go:523
msgid "No mirrors containing \"%s\" found in repo \"%s\"" msgid "No mirrors containing \"%s\" found in repo \"%s\""
msgstr "" msgstr ""
#: repo.go:492 #: repo.go:525
msgid "URL \"%s\" does not exist in repo \"%s\"" msgid "URL \"%s\" does not exist in repo \"%s\""
msgstr "" msgstr ""
#: repo.go:508 repo.go:580 #: repo.go:541 repo.go:613
msgid "Removed %d mirrors from repo \"%s\"\n" msgid "Removed %d mirrors from repo \"%s\"\n"
msgstr "" msgstr ""
#: repo.go:520 #: repo.go:553
msgid "Remove all mirrors from the repository" msgid "Remove all mirrors from the repository"
msgstr "" msgstr ""
#: repo.go:602 #: repo.go:635
msgid "Name of the new repo" msgid "Name of the new repo"
msgstr "" msgstr ""
#: repo.go:608 #: repo.go:641
msgid "URL of the new repo" msgid "URL of the new repo"
msgstr "" msgstr ""
#: repo.go:632 #: repo.go:665
msgid "Name of the repo to be deleted" msgid "Name of the repo to be deleted"
msgstr "" msgstr ""
#: search.go:40 #: search.go:39
msgid "Search packages" msgid "Search packages"
msgstr "" msgstr ""
#: search.go:51 #: search.go:50
msgid "Search by name" msgid "Search by name"
msgstr "" msgstr ""
#: search.go:56 #: search.go:55
msgid "Search by description" msgid "Search by description"
msgstr "" msgstr ""
#: search.go:61 #: search.go:60
msgid "Search by repository" msgid "Search by repository"
msgstr "" msgstr ""
#: search.go:66 #: search.go:65
msgid "Search by provides" msgid "Search by provides"
msgstr "" msgstr ""
#: search.go:130 #: search.go:126
msgid "Error while executing search" msgid "Error while executing search"
msgstr "" msgstr ""
@@ -650,10 +790,22 @@ msgstr ""
msgid "Upgrade all installed packages" msgid "Upgrade all installed packages"
msgstr "" msgstr ""
#: upgrade.go:106 upgrade.go:123 #: upgrade.go:89
msgid "Updating system packages..."
msgstr ""
#: upgrade.go:95
msgid "Error updating system packages"
msgstr ""
#: upgrade.go:97
msgid "System packages updated successfully"
msgstr ""
#: upgrade.go:113 upgrade.go:130
msgid "Error checking for updates" msgid "Error checking for updates"
msgstr "" msgstr ""
#: upgrade.go:126 #: upgrade.go:133
msgid "There is nothing to do." msgid "There is nothing to do."
msgstr "" msgstr ""

View File

@@ -41,27 +41,31 @@ msgstr "Создайте пакет с нуля, даже если уже име
msgid "Error getting working directory" msgid "Error getting working directory"
msgstr "Ошибка при получении рабочего каталога" msgstr "Ошибка при получении рабочего каталога"
#: build.go:117 #: build.go:111
msgid "Cannot get absolute script path" msgid "Cannot get absolute script path"
msgstr "Невозможно получить абсолютный путь к скрипту" msgstr "Невозможно получить абсолютный путь к скрипту"
#: build.go:143 #: build.go:137
msgid "Package not found" msgid "Package not found"
msgstr "Пакет не найден" msgstr "Пакет не найден"
#: build.go:156 #: build.go:150
msgid "Nothing to build" msgid "Nothing to build"
msgstr "Нечего собирать" msgstr "Нечего собирать"
#: build.go:213 #: build.go:195
msgid "Error building package" msgid "Error building package"
msgstr "Ошибка при сборке пакета" msgstr "Ошибка при сборке пакета"
#: build.go:220 #: build.go:203
msgid "Package file already moved or removed, skipping"
msgstr "Файл пакета уже перемещён или удалён, пропускаем"
#: build.go:209
msgid "Error moving the package" msgid "Error moving the package"
msgstr "Ошибка при перемещении пакета" msgstr "Ошибка при перемещении пакета"
#: build.go:224 #: build.go:213
msgid "Done" msgid "Done"
msgstr "Сделано" msgstr "Сделано"
@@ -69,71 +73,132 @@ msgstr "Сделано"
msgid "Manage config" msgid "Manage config"
msgstr "Управление конфигурацией" msgstr "Управление конфигурацией"
#: config.go:48 #: config.go:50
msgid "Shows a list of commands or help for one command"
msgstr "Показывает список команд или справку по одной команде"
#: config.go:66
msgid "Show config" msgid "Show config"
msgstr "Показать конфигурацию" msgstr "Показать конфигурацию"
#: config.go:84 #: config.go:103
msgid "Set config value" msgid "Set config value"
msgstr "Установить значение в конфигурации" msgstr "Установить значение в конфигурации"
#: config.go:85 #: config.go:104
msgid "<key> <value>" msgid "<key> <value>"
msgstr "<ключ> <значение>" msgstr "<ключ> <значение>"
#: config.go:118 config.go:126 #: config.go:137 config.go:145 config.go:162
msgid "invalid boolean value for %s: %s" msgid "invalid boolean value for %s: %s"
msgstr "неверное булево значение для %s: %s" msgstr "неверное булево значение для %s: %s"
#: config.go:141 #: config.go:166
msgid "use 'repo add/remove' commands to manage repositories" msgid "use 'repo add/remove' commands to manage repositories"
msgstr "используйте команды 'repo add/remove' для управления репозиториями" msgstr "используйте команды 'repo add/remove' для управления репозиториями"
#: config.go:143 config.go:221 #: config.go:168 config.go:248
msgid "unknown config key: %s" msgid "unknown config key: %s"
msgstr "неизвестный ключ конфигурации: %s" msgstr "неизвестный ключ конфигурации: %s"
#: config.go:147 #: config.go:172
msgid "failed to save config" msgid "failed to save config"
msgstr "не удалось сохранить конфигурацию" msgstr "не удалось сохранить конфигурацию"
#: config.go:150 #: config.go:175
msgid "Successfully set %s = %s" msgid "Successfully set %s = %s"
msgstr "Успешно установлено %s = %s" msgstr "Успешно установлено %s = %s"
#: config.go:159 #: config.go:184
msgid "Get config value" msgid "Get config value"
msgstr "Получить значение из конфигурации" msgstr "Получить значение из конфигурации"
#: config.go:160 #: config.go:185
msgid "<key>" msgid "<key>"
msgstr "<ключ>" msgstr "<ключ>"
#: fix.go:39 #: fix.go:55
msgid "Attempt to fix problems with ALR" msgid "Attempt to fix problems with ALR"
msgstr "Попытка устранить проблемы с ALR" msgstr "Попытка устранить проблемы с ALR"
#: fix.go:60 #: fix.go:75
msgid "Clearing cache directory" msgid "Clearing cache and temporary directories"
msgstr "Очистка каталога кэша" msgstr "Очистка кэша и временных директорий"
#: fix.go:64 #: fix.go:82
msgid "Cache directory does not exist, will create it"
msgstr ""
#: fix.go:84
msgid "Unable to open cache directory" msgid "Unable to open cache directory"
msgstr "Невозможно открыть каталог кэша" msgstr "Невозможно открыть каталог кэша"
#: fix.go:70 #: fix.go:91
msgid "Unable to read cache directory contents" msgid "Unable to read cache directory contents"
msgstr "Невозможно прочитать содержимое каталога кэша" msgstr "Невозможно прочитать содержимое каталога кэша"
#: fix.go:82 #: fix.go:106
#, fuzzy
msgid "Unable to remove cache item (%s) as current user, trying with sudo"
msgstr ""
"Невозможно удалить временную директорию от текущего пользователя, попытка "
"через sudo"
#: fix.go:111
msgid "Unable to remove cache item (%s)" msgid "Unable to remove cache item (%s)"
msgstr "Невозможно удалить элемент кэша (%s)" msgstr "Невозможно удалить элемент кэша (%s)"
#: fix.go:86 #: fix.go:119
msgid "Clearing temporary directory"
msgstr "Очистка временной директории"
#: fix.go:126
msgid "Unable to remove temporary directory as current user, trying with sudo"
msgstr ""
"Невозможно удалить временную директорию от текущего пользователя, попытка "
"через sudo"
#: fix.go:129
#, fuzzy
msgid "Unable to remove temporary directory"
msgstr "Невозможно открыть каталог кэша"
#: fix.go:137
#, fuzzy
msgid "Unable to create temporary directory"
msgstr "Не удалось создать каталог конфигурации ALR"
#: fix.go:144
#, fuzzy
msgid "Unable to create download directory"
msgstr "Не удалось создать каталог конфигурации ALR"
#: fix.go:151
#, fuzzy
msgid "Unable to create packages directory"
msgstr "Не удалось создать каталог кэша пакетов"
#: fix.go:156
msgid "Fixing permissions on temporary files"
msgstr "Исправление прав доступа к временным файлам"
#: fix.go:164
msgid "Unable to fix file ownership"
msgstr ""
#: fix.go:169
msgid "Unable to fix file permissions"
msgstr ""
#: fix.go:174
msgid "Rebuilding cache" msgid "Rebuilding cache"
msgstr "Восстановление кэша" msgstr "Восстановление кэша"
#: fix.go:90 #: fix.go:177
msgid "Creating cache directory"
msgstr "Создание директории кэша"
#: fix.go:180
msgid "Unable to create new cache directory" msgid "Unable to create new cache directory"
msgstr "Не удалось создать новый каталог кэша" msgstr "Не удалось создать новый каталог кэша"
@@ -145,55 +210,69 @@ msgstr "Генерация скрипта ALR из шаблона"
msgid "Generate a ALR script for a pip module" msgid "Generate a ALR script for a pip module"
msgstr "Генерация скрипта ALR для модуля pip" msgstr "Генерация скрипта ALR для модуля pip"
#: gen.go:66
#, fuzzy
msgid "Generate a ALR script for an AUR package"
msgstr "Генерация скрипта ALR из шаблона"
#: gen.go:72
#, fuzzy
msgid "Name of the AUR package"
msgstr "Название нового репозитория"
#: gen.go:77
msgid "Version of the package (optional, uses latest if not specified)"
msgstr ""
#: helper.go:42 #: helper.go:42
msgid "List all the available helper commands" msgid "List all the available helper commands"
msgstr "Список всех доступных вспомогательных команды" msgstr "Список всех доступных вспомогательных команды"
#: helper.go:54 #: helper.go:69
msgid "Run a ALR helper command" msgid "Run a ALR helper command"
msgstr "Запустить вспомогательную команду ALR" msgstr "Запустить вспомогательную команду ALR"
#: helper.go:61 #: helper.go:76
msgid "The directory that the install commands will install to" msgid "The directory that the install commands will install to"
msgstr "Каталог, в который будут устанавливать команды установки" msgstr "Каталог, в который будут устанавливать команды установки"
#: helper.go:74 helper.go:75 #: helper.go:89 helper.go:90
msgid "No such helper command" msgid "No such helper command"
msgstr "Такой вспомогательной команды нет" msgstr "Такой вспомогательной команды нет"
#: helper.go:85 #: helper.go:100
msgid "Error parsing os-release file" msgid "Error parsing os-release file"
msgstr "Ошибка при разборе файла выпуска операционной системы" msgstr "Ошибка при разборе файла выпуска операционной системы"
#: info.go:42 #: info.go:41
msgid "Print information about a package" msgid "Print information about a package"
msgstr "Отобразить информацию о пакете" msgstr "Отобразить информацию о пакете"
#: info.go:47 #: info.go:46
msgid "Show all information, not just for the current distro" msgid "Show all information, not just for the current distro"
msgstr "Показывать всю информацию, не только для текущего дистрибутива" msgstr "Показывать всю информацию, не только для текущего дистрибутива"
#: info.go:68 #: info.go:64
msgid "Error getting packages" msgid "Error getting packages"
msgstr "Ошибка при получении пакетов" msgstr "Ошибка при получении пакетов"
#: info.go:83 #: info.go:77
msgid "Command info expected at least 1 argument, got %d" msgid "Command info expected at least 1 argument, got %d"
msgstr "Для команды info ожидался хотя бы 1 аргумент, получено %d" msgstr "Для команды info ожидался хотя бы 1 аргумент, получено %d"
#: info.go:104 #: info.go:98
msgid "Error finding packages" msgid "Error finding packages"
msgstr "Ошибка при поиске пакетов" msgstr "Ошибка при поиске пакетов"
#: info.go:118 #: info.go:112
msgid "Can't detect system language" msgid "Can't detect system language"
msgstr "Ошибка при определении языка системы" msgstr "Ошибка при определении языка системы"
#: info.go:134 #: info.go:128
msgid "Error resolving overrides" msgid "Error resolving overrides"
msgstr "Ошибка устранения переорпеделений" msgstr "Ошибка устранения переорпеделений"
#: info.go:143 #: info.go:137
msgid "Error encoding script variables" msgid "Error encoding script variables"
msgstr "Ошибка кодирования переменных скрита" msgstr "Ошибка кодирования переменных скрита"
@@ -205,43 +284,47 @@ msgstr "Установить новый пакет"
msgid "Command install expected at least 1 argument, got %d" msgid "Command install expected at least 1 argument, got %d"
msgstr "Для команды install ожидался хотя бы 1 аргумент, получено %d" msgstr "Для команды install ожидался хотя бы 1 аргумент, получено %d"
#: install.go:113 #: install.go:107
msgid "Error when installing the package" msgid "Error when installing the package"
msgstr "Ошибка при установке пакета" msgstr "Ошибка при установке пакета"
#: install.go:151 #: install.go:142
msgid "Remove an installed package" msgid "Remove an installed package"
msgstr "Удалить установленный пакет" msgstr "Удалить установленный пакет"
#: install.go:170 #: install.go:161
msgid "Error listing installed packages" msgid "Error listing installed packages"
msgstr "Ошибка при составлении списка установленных пакетов" msgstr "Ошибка при составлении списка установленных пакетов"
#: install.go:199 #: install.go:190
msgid "Command remove expected at least 1 argument, got %d" msgid "Command remove expected at least 1 argument, got %d"
msgstr "Для команды remove ожидался хотя бы 1 аргумент, получено %d" msgstr "Для команды remove ожидался хотя бы 1 аргумент, получено %d"
#: install.go:214 #: install.go:205
msgid "Error removing packages" msgid "Error removing packages"
msgstr "Ошибка при удалении пакетов" msgstr "Ошибка при удалении пакетов"
#: internal/build/build.go:351 #: internal/build/build.go:342 internal/build/build.go:653
msgid "Using cached package"
msgstr "Используется кешированный пакет"
#: internal/build/build.go:357
msgid "Building package" msgid "Building package"
msgstr "Сборка пакета" msgstr "Сборка пакета"
#: internal/build/build.go:380 #: internal/build/build.go:386
msgid "The checksums array must be the same length as sources" msgid "The checksums array must be the same length as sources"
msgstr "Массив контрольных сумм должен быть той же длины, что и источники" msgstr "Массив контрольных сумм должен быть той же длины, что и источники"
#: internal/build/build.go:422 #: internal/build/build.go:438
msgid "Downloading sources" msgid "Downloading sources"
msgstr "Скачивание источников" msgstr "Скачивание источников"
#: internal/build/build.go:468 #: internal/build/build.go:484
msgid "Would you like to remove the build dependencies?" msgid "Would you like to remove the build dependencies?"
msgstr "Хотели бы вы удалить зависимости сборки?" msgstr "Хотели бы вы удалить зависимости сборки?"
#: internal/build/build.go:546 #: internal/build/build.go:569
msgid "Installing dependencies" msgid "Installing dependencies"
msgstr "Установка зависимостей" msgstr "Установка зависимостей"
@@ -283,22 +366,71 @@ msgstr ""
msgid "Applying FireJail integration" msgid "Applying FireJail integration"
msgstr "Применение интеграции FireJail" msgstr "Применение интеграции FireJail"
#: internal/build/script_executor.go:145 #: internal/build/installer.go:99
msgid ""
"Package %s is installed with older version %s, will rebuild with version %s"
msgstr ""
"Пакет %s установлен с устаревшей версией %s, будет пересобран с версией %s"
#: internal/build/installer.go:102
msgid "Package %s is already installed with version %s, skipping build"
msgstr "Пакет %s уже установлен с версией %s, пропуск сборки"
#: internal/build/installer.go:104
msgid ""
"Package %s is installed with newer version %s (repo has %s), skipping build"
msgstr ""
"Пакет %s установлен с более новой версией %s (в репозитории %s), пропуск "
"сборки"
#: internal/build/script_executor.go:167
msgid "Building package metadata" msgid "Building package metadata"
msgstr "Сборка метаданных пакета" msgstr "Сборка метаданных пакета"
#: internal/build/script_executor.go:285 #: internal/build/script_executor.go:192
msgid "Creating package file"
msgstr "Создание файла пакета"
#: internal/build/script_executor.go:196
msgid "Failed to create package file"
msgstr "Не удалось создать файл пакета"
#: internal/build/script_executor.go:201
msgid "Packaging with nfpm"
msgstr "Упаковка с помощью nfpm"
#: internal/build/script_executor.go:204
msgid "Failed to create package"
msgstr "Не удалось создать пакет"
#: internal/build/script_executor.go:208
msgid "Package created successfully"
msgstr "Пакет успешно создан"
#: internal/build/script_executor.go:212
msgid "Package file not found after creation"
msgstr "Файл пакета не найден после создания"
#: internal/build/script_executor.go:215
msgid "Package file verified to exist"
msgstr "Наличие файла пакета подтверждено"
#: internal/build/script_executor.go:322
msgid "Executing prepare()" msgid "Executing prepare()"
msgstr "Выполнение prepare()" msgstr "Выполнение prepare()"
#: internal/build/script_executor.go:294 #: internal/build/script_executor.go:331
msgid "Executing build()" msgid "Executing build()"
msgstr "Выполнение build()" msgstr "Выполнение build()"
#: internal/build/script_executor.go:323 internal/build/script_executor.go:343 #: internal/build/script_executor.go:360 internal/build/script_executor.go:380
msgid "Executing %s()" msgid "Executing %s()"
msgstr "Выполнение %s()" msgstr "Выполнение %s()"
#: internal/cliutils/app_builder/builder.go:45
msgid "failed to close db"
msgstr "не удалось закрыть БД"
#: internal/cliutils/app_builder/builder.go:75 #: internal/cliutils/app_builder/builder.go:75
msgid "Error loading config" msgid "Error loading config"
msgstr "Ошибка при загрузке" msgstr "Ошибка при загрузке"
@@ -331,23 +463,25 @@ msgstr "Продолжить?"
msgid "User chose not to continue after reading script" msgid "User chose not to continue after reading script"
msgstr "Пользователь решил не продолжать после просмотра скрипта" msgstr "Пользователь решил не продолжать после просмотра скрипта"
#: internal/cliutils/prompt.go:111 #: internal/cliutils/prompt.go:123
msgid "Error prompting for choice of package" msgid "Error prompting for choice of package"
msgstr "Ошибка при запросе выбора пакета" msgstr "Ошибка при запросе выбора пакета"
#: internal/cliutils/prompt.go:135 #: internal/cliutils/prompt.go:175
msgid "Choose which package to %s" msgid "Choose which package to %s"
msgstr "Выберите, какой пакет использовать для %s" msgstr "Выберите, какой пакет использовать для %s"
#: internal/cliutils/prompt.go:156 #: internal/cliutils/prompt.go:196
msgid "Choose which optional package(s) to install" msgid "Choose which optional package(s) to install"
msgstr "Выберите дополнительные пакеты для установки" msgstr "Выберите дополнительные пакеты для установки"
#: internal/cliutils/template.go:74 internal/cliutils/template.go:93 #: internal/cliutils/template.go:74 internal/cliutils/template.go:93
#: internal/cliutils/template.go:126
msgid "NAME" msgid "NAME"
msgstr "НАЗВАНИЕ" msgstr "НАЗВАНИЕ"
#: internal/cliutils/template.go:74 internal/cliutils/template.go:94 #: internal/cliutils/template.go:74 internal/cliutils/template.go:94
#: internal/cliutils/template.go:126
msgid "USAGE" msgid "USAGE"
msgstr "ИСПОЛЬЗОВАНИЕ" msgstr "ИСПОЛЬЗОВАНИЕ"
@@ -355,15 +489,17 @@ msgstr "ИСПОЛЬЗОВАНИЕ"
msgid "global options" msgid "global options"
msgstr "глобальные опции" msgstr "глобальные опции"
#: internal/cliutils/template.go:74 #: internal/cliutils/template.go:74 internal/cliutils/template.go:126
msgid "command" msgid "command"
msgstr "команда" msgstr "команда"
#: internal/cliutils/template.go:74 internal/cliutils/template.go:95 #: internal/cliutils/template.go:74 internal/cliutils/template.go:95
#: internal/cliutils/template.go:126
msgid "command options" msgid "command options"
msgstr "опции команды" msgstr "опции команды"
#: internal/cliutils/template.go:74 internal/cliutils/template.go:96 #: internal/cliutils/template.go:74 internal/cliutils/template.go:96
#: internal/cliutils/template.go:126
msgid "arguments" msgid "arguments"
msgstr "аргументы" msgstr "аргументы"
@@ -372,14 +508,15 @@ msgid "VERSION"
msgstr "ВЕРСИЯ" msgstr "ВЕРСИЯ"
#: internal/cliutils/template.go:74 internal/cliutils/template.go:98 #: internal/cliutils/template.go:74 internal/cliutils/template.go:98
#: internal/cliutils/template.go:126
msgid "DESCRIPTION" msgid "DESCRIPTION"
msgstr "ОПИСАНИЕ" msgstr "ОПИСАНИЕ"
#: internal/cliutils/template.go:74 #: internal/cliutils/template.go:74 internal/cliutils/template.go:126
msgid "AUTHOR" msgid "AUTHOR"
msgstr "АВТОР" msgstr "АВТОР"
#: internal/cliutils/template.go:74 #: internal/cliutils/template.go:74 internal/cliutils/template.go:126
msgid "COMMANDS" msgid "COMMANDS"
msgstr "КОМАНДЫ" msgstr "КОМАНДЫ"
@@ -387,7 +524,7 @@ msgstr "КОМАНДЫ"
msgid "GLOBAL OPTIONS" msgid "GLOBAL OPTIONS"
msgstr "ГЛОБАЛЬНЫЕ ОПЦИИ" msgstr "ГЛОБАЛЬНЫЕ ОПЦИИ"
#: internal/cliutils/template.go:74 #: internal/cliutils/template.go:74 internal/cliutils/template.go:126
msgid "COPYRIGHT" msgid "COPYRIGHT"
msgstr "АВТОРСКОЕ ПРАВО" msgstr "АВТОРСКОЕ ПРАВО"
@@ -396,6 +533,7 @@ msgid "CATEGORY"
msgstr "КАТЕГОРИЯ" msgstr "КАТЕГОРИЯ"
#: internal/cliutils/template.go:99 internal/cliutils/template.go:100 #: internal/cliutils/template.go:99 internal/cliutils/template.go:100
#: internal/cliutils/template.go:126
msgid "OPTIONS" msgid "OPTIONS"
msgstr "ПАРАМЕТРЫ" msgstr "ПАРАМЕТРЫ"
@@ -407,11 +545,15 @@ msgstr ""
"Эта команда устарела и будет удалена в будущем, используйте вместо нее " "Эта команда устарела и будет удалена в будущем, используйте вместо нее "
"\"%s\"!" "\"%s\"!"
#: internal/db/db.go:76 #: internal/db/db.go:67
msgid "Cache directory does not exist, creating it"
msgstr ""
#: internal/db/db.go:95
msgid "Database version mismatch; resetting" msgid "Database version mismatch; resetting"
msgstr "Несоответствие версий базы данных; сброс настроек" msgstr "Несоответствие версий базы данных; сброс настроек"
#: internal/db/db.go:82 #: internal/db/db.go:101
msgid "" msgid ""
"Database version does not exist. Run alr fix if something isn't working." "Database version does not exist. Run alr fix if something isn't working."
msgstr "" msgstr ""
@@ -449,43 +591,55 @@ msgstr ""
"Минимальная версия ALR для ALR-репозитория выше текущей версии. Попробуйте " "Минимальная версия ALR для ALR-репозитория выше текущей версии. Попробуйте "
"обновить ALR, если что-то не работает." "обновить ALR, если что-то не работает."
#: internal/utils/cmd.go:97 #: internal/repos/pull.go:423
msgid "Error on dropping capabilities" msgid "Failed to get deleted file from old commit"
msgstr "Ошибка при понижении привилегий" msgstr "Не удалось получить удалённый файл из старого коммита"
#: internal/utils/cmd.go:164 #: internal/repos/pull.go:429
msgid "You need to be a %s member to perform this action" msgid "Failed to read deleted file"
msgstr "Вы должны быть членом %s чтобы выполнить это" msgstr "Не удалось прочитать удалённый файл"
#: internal/utils/cmd.go:200 #: internal/repos/pull.go:448
msgid "Failed to get updated file from new commit"
msgstr "Не удалось получить обновлённый файл из нового коммита"
#: internal/repos/pull.go:454
msgid "Failed to read updated file"
msgstr "Не удалось прочитать обновлённый файл"
#: internal/repos/pull.go:508
msgid "No alr.sh files found in repository"
msgstr "Файлы alr.sh не найдены в репозитории"
#: internal/utils/cmd.go:54
msgid "You need to be root to perform this action" msgid "You need to be root to perform this action"
msgstr "Вы должны быть root чтобы выполнить это" msgstr "Вы должны быть root чтобы выполнить это"
#: list.go:45 #: list.go:44
msgid "List ALR repo packages" msgid "List ALR repo packages"
msgstr "Список пакетов репозитория ALR" msgstr "Список пакетов репозитория ALR"
#: list.go:59 #: list.go:58
msgid "Format output using a Go template" msgid "Format output using a Go template"
msgstr "Формат выходных данных с использованием шаблона Go" msgstr "Формат выходных данных с использованием шаблона Go"
#: list.go:91 #: list.go:87
msgid "Error getting packages for upgrade" msgid "Error getting packages for upgrade"
msgstr "Ошибка при получении пакетов для обновления" msgstr "Ошибка при получении пакетов для обновления"
#: list.go:94 #: list.go:90
msgid "No packages for upgrade" msgid "No packages for upgrade"
msgstr "Нет пакетов к обновлению" msgstr "Нет пакетов к обновлению"
#: list.go:104 list.go:201 #: list.go:100 list.go:197
msgid "Error parsing format template" msgid "Error parsing format template"
msgstr "Ошибка при разборе шаблона" msgstr "Ошибка при разборе шаблона"
#: list.go:110 list.go:205 #: list.go:106 list.go:201
msgid "Error executing template" msgid "Error executing template"
msgstr "Ошибка при выполнении шаблона" msgstr "Ошибка при выполнении шаблона"
#: list.go:164 #: list.go:160
msgid "Failed to parse release" msgid "Failed to parse release"
msgstr "Не удалось разобрать релиз" msgstr "Не удалось разобрать релиз"
@@ -493,23 +647,19 @@ msgstr "Не удалось разобрать релиз"
msgid "Print the current ALR version and exit" msgid "Print the current ALR version and exit"
msgstr "Показать текущую версию ALR и выйти" msgstr "Показать текущую версию ALR и выйти"
#: main.go:61 #: main.go:77
msgid "Arguments to be passed on to the package manager" msgid "Arguments to be passed on to the package manager"
msgstr "Аргументы, которые будут переданы менеджеру пакетов" msgstr "Аргументы, которые будут переданы менеджеру пакетов"
#: main.go:67 #: main.go:83
msgid "Enable interactive questions and prompts" msgid "Enable interactive questions and prompts"
msgstr "Включение интерактивных вопросов и запросов" msgstr "Включение интерактивных вопросов и запросов"
#: main.go:147 #: main.go:165
msgid "Show help" msgid "Show help"
msgstr "Показать справку" msgstr "Показать справку"
#: main.go:148 #: main.go:169
msgid "Shows a list of commands or help for one command"
msgstr "Показывает список команд или справку по одной команде"
#: main.go:152
msgid "Error while running app" msgid "Error while running app"
msgstr "Ошибка при запуске приложения" msgstr "Ошибка при запуске приложения"
@@ -545,124 +695,124 @@ msgstr "Скачать все изменённые репозитории"
msgid "Manage repos" msgid "Manage repos"
msgstr "Управление репозиториями" msgstr "Управление репозиториями"
#: repo.go:56 repo.go:625 #: repo.go:74 repo.go:658
msgid "Remove an existing repository" msgid "Remove an existing repository"
msgstr "Удалить существующий репозиторий" msgstr "Удалить существующий репозиторий"
#: repo.go:58 repo.go:521 #: repo.go:76 repo.go:554
msgid "<name>" msgid "<name>"
msgstr "<имя>" msgstr "<имя>"
#: repo.go:103 repo.go:465 repo.go:568 #: repo.go:121 repo.go:498 repo.go:601
msgid "Repo \"%s\" does not exist" msgid "Repo \"%s\" does not exist"
msgstr "Репозиторий \"%s\" не существует" msgstr "Репозиторий \"%s\" не существует"
#: repo.go:110 #: repo.go:128
msgid "Error removing repo directory" msgid "Error removing repo directory"
msgstr "Ошибка при удалении каталога репозитория" msgstr "Ошибка при удалении каталога репозитория"
#: repo.go:114 repo.go:195 repo.go:253 repo.go:316 repo.go:389 repo.go:504 #: repo.go:132 repo.go:210 repo.go:268 repo.go:331 repo.go:422 repo.go:537
#: repo.go:576 #: repo.go:609
msgid "Error saving config" msgid "Error saving config"
msgstr "Ошибка при сохранении конфигурации" msgstr "Ошибка при сохранении конфигурации"
#: repo.go:133 #: repo.go:148
msgid "Error removing packages from database" msgid "Error removing packages from database"
msgstr "Ошибка при удалении пакетов из базы данных" msgstr "Ошибка при удалении пакетов из базы данных"
#: repo.go:144 repo.go:595 #: repo.go:159 repo.go:628
msgid "Add a new repository" msgid "Add a new repository"
msgstr "Добавить новый репозиторий" msgstr "Добавить новый репозиторий"
#: repo.go:145 repo.go:270 repo.go:345 repo.go:402 #: repo.go:160 repo.go:285 repo.go:378 repo.go:435
msgid "<name> <url>" msgid "<name> <url>"
msgstr "<имя> <url>" msgstr "<имя> <url>"
#: repo.go:170 #: repo.go:185
msgid "Repo \"%s\" already exists" msgid "Repo \"%s\" already exists"
msgstr "Репозиторий \"%s\" уже существует" msgstr "Репозиторий \"%s\" уже существует"
#: repo.go:206 #: repo.go:221
msgid "Set the reference of the repository" msgid "Set the reference of the repository"
msgstr "Установить ссылку на версию репозитория" msgstr "Установить ссылку на версию репозитория"
#: repo.go:207 #: repo.go:222
msgid "<name> <ref>" msgid "<name> <ref>"
msgstr "<имя> <ссылкааерсию>" msgstr "<имя> <ссылкааерсию>"
#: repo.go:269 #: repo.go:284
msgid "Set the main url of the repository" msgid "Set the main url of the repository"
msgstr "Установить главный URL репозитория" msgstr "Установить главный URL репозитория"
#: repo.go:332 #: repo.go:347
msgid "Manage mirrors of repos" msgid "Manage mirrors of repos"
msgstr "Управление зеркалами репозитория" msgstr "Управление зеркалами репозитория"
#: repo.go:344 #: repo.go:377
msgid "Add a mirror URL to repository" msgid "Add a mirror URL to repository"
msgstr "Добавить зеркало репозитория" msgstr "Добавить зеркало репозитория"
#: repo.go:401 #: repo.go:434
msgid "Remove mirror from the repository" msgid "Remove mirror from the repository"
msgstr "Удалить зеркало из репозитория" msgstr "Удалить зеркало из репозитория"
#: repo.go:420 #: repo.go:453
msgid "Ignore if mirror does not exist" msgid "Ignore if mirror does not exist"
msgstr "Игнорировать, если зеркала не существует" msgstr "Игнорировать, если зеркала не существует"
#: repo.go:425 #: repo.go:458
msgid "Match partial URL (e.g., github.com instead of full URL)" msgid "Match partial URL (e.g., github.com instead of full URL)"
msgstr "Соответствует частичному URL (например, github.com вместо полного URL)" msgstr "Соответствует частичному URL (например, github.com вместо полного URL)"
#: repo.go:490 #: repo.go:523
msgid "No mirrors containing \"%s\" found in repo \"%s\"" msgid "No mirrors containing \"%s\" found in repo \"%s\""
msgstr "В репозитории \"%s\" не найдено зеркал, содержащих \"%s\"" msgstr "В репозитории \"%s\" не найдено зеркал, содержащих \"%s\""
#: repo.go:492 #: repo.go:525
msgid "URL \"%s\" does not exist in repo \"%s\"" msgid "URL \"%s\" does not exist in repo \"%s\""
msgstr "URL \"%s\" не существует в репозитории \"%s\"" msgstr "URL \"%s\" не существует в репозитории \"%s\""
#: repo.go:508 repo.go:580 #: repo.go:541 repo.go:613
msgid "Removed %d mirrors from repo \"%s\"\n" msgid "Removed %d mirrors from repo \"%s\"\n"
msgstr "Удалено %d зеркал из репозитория \"%s\"\n" msgstr "Удалено %d зеркал из репозитория \"%s\"\n"
#: repo.go:520 #: repo.go:553
msgid "Remove all mirrors from the repository" msgid "Remove all mirrors from the repository"
msgstr "Удалить все зеркала из репозитория" msgstr "Удалить все зеркала из репозитория"
#: repo.go:602 #: repo.go:635
msgid "Name of the new repo" msgid "Name of the new repo"
msgstr "Название нового репозитория" msgstr "Название нового репозитория"
#: repo.go:608 #: repo.go:641
msgid "URL of the new repo" msgid "URL of the new repo"
msgstr "URL-адрес нового репозитория" msgstr "URL-адрес нового репозитория"
#: repo.go:632 #: repo.go:665
msgid "Name of the repo to be deleted" msgid "Name of the repo to be deleted"
msgstr "Название репозитория для удаления" msgstr "Название репозитория для удаления"
#: search.go:40 #: search.go:39
msgid "Search packages" msgid "Search packages"
msgstr "Поиск пакетов" msgstr "Поиск пакетов"
#: search.go:51 #: search.go:50
msgid "Search by name" msgid "Search by name"
msgstr "Искать по имени" msgstr "Искать по имени"
#: search.go:56 #: search.go:55
msgid "Search by description" msgid "Search by description"
msgstr "Искать по описанию" msgstr "Искать по описанию"
#: search.go:61 #: search.go:60
msgid "Search by repository" msgid "Search by repository"
msgstr "Искать по репозиторию" msgstr "Искать по репозиторию"
#: search.go:66 #: search.go:65
msgid "Search by provides" msgid "Search by provides"
msgstr "Искать по provides" msgstr "Искать по provides"
#: search.go:130 #: search.go:126
msgid "Error while executing search" msgid "Error while executing search"
msgstr "Ошибка при выполнении поиска" msgstr "Ошибка при выполнении поиска"
@@ -670,113 +820,35 @@ msgstr "Ошибка при выполнении поиска"
msgid "Upgrade all installed packages" msgid "Upgrade all installed packages"
msgstr "Обновить все установленные пакеты" msgstr "Обновить все установленные пакеты"
#: upgrade.go:106 upgrade.go:123
msgid "Error checking for updates"
msgstr "Ошибка при проверке обновлений"
#: upgrade.go:126
msgid "There is nothing to do."
msgstr "Действия не требуются."
#: internal/build/installer.go:88
msgid "Package %s is installed with older version %s, will rebuild with version %s"
msgstr "Пакет %s установлен с устаревшей версией %s, будет пересобран с версией %s"
#: internal/build/installer.go:96
msgid "Package %s is already installed with version %s, skipping build"
msgstr "Пакет %s уже установлен с версией %s, пропуск сборки"
#: internal/build/installer.go:102
msgid "Package %s is installed with newer version %s (repo has %s), skipping build"
msgstr "Пакет %s установлен с более новой версией %s (в репозитории %s), пропуск сборки"
#: internal/build/script_executor.go:170
msgid "Creating package file"
msgstr "Создание файла пакета"
#: internal/build/script_executor.go:174
msgid "Failed to create package file"
msgstr "Не удалось создать файл пакета"
#: internal/build/script_executor.go:179
msgid "Packaging with nfpm"
msgstr "Упаковка с помощью nfpm"
#: internal/build/script_executor.go:182
msgid "Failed to create package"
msgstr "Не удалось создать пакет"
#: internal/build/script_executor.go:186
msgid "Package created successfully"
msgstr "Пакет успешно создан"
#: internal/build/script_executor.go:190
msgid "Package file not found after creation"
msgstr "Файл пакета не найден после создания"
#: internal/build/script_executor.go:193
msgid "Package file verified to exist"
msgstr "Наличие файла пакета подтверждено"
#: internal/repos/pull.go:423
msgid "Failed to get deleted file from old commit"
msgstr "Не удалось получить удалённый файл из старого коммита"
#: internal/repos/pull.go:429
msgid "Failed to read deleted file"
msgstr "Не удалось прочитать удалённый файл"
#: internal/repos/pull.go:448
msgid "Failed to get updated file from new commit"
msgstr "Не удалось получить обновлённый файл из нового коммита"
#: internal/repos/pull.go:454
msgid "Failed to read updated file"
msgstr "Не удалось прочитать обновлённый файл"
#: internal/repos/pull.go:508
msgid "No alr.sh files found in repository"
msgstr "Файлы alr.sh не найдены в репозитории"
#: internal/cliutils/app_builder/builder.go:45
msgid "failed to close db"
msgstr "не удалось закрыть БД"
#: internal/build/build.go:342
msgid "Using cached package"
msgstr "Используется кешированный пакет"
#: upgrade.go:89 #: upgrade.go:89
msgid "Updating system packages..." msgid "Updating system packages..."
msgstr "Обновление системных пакетов..." msgstr "Обновление системных пакетов..."
#: upgrade.go:95
#, fuzzy
msgid "Error updating system packages"
msgstr "Обновление системных пакетов..."
#: upgrade.go:97 #: upgrade.go:97
msgid "System packages updated successfully" msgid "System packages updated successfully"
msgstr "Системные пакеты успешно обновлены" msgstr "Системные пакеты успешно обновлены"
#: build.go:203 #: upgrade.go:113 upgrade.go:130
msgid "Package file already moved or removed, skipping" msgid "Error checking for updates"
msgstr "Файл пакета уже перемещён или удалён, пропускаем" msgstr "Ошибка при проверке обновлений"
#: fix.go:75 #: upgrade.go:133
msgid "Clearing cache and temporary directories" msgid "There is nothing to do."
msgstr "Очистка кэша и временных директорий" msgstr "Действия не требуются."
#: fix.go:119 #~ msgid "Clearing cache directory"
msgid "Clearing temporary directory" #~ msgstr "Очистка каталога кэша"
msgstr "Очистка временной директории"
#: fix.go:126 #~ msgid "Error on dropping capabilities"
msgid "Unable to remove temporary directory as current user, trying with sudo" #~ msgstr "Ошибка при понижении привилегий"
msgstr "Невозможно удалить временную директорию от текущего пользователя, попытка через sudo"
#: fix.go:156 #~ msgid "You need to be a %s member to perform this action"
msgid "Fixing permissions on temporary files" #~ msgstr "Вы должны быть членом %s чтобы выполнить это"
msgstr "Исправление прав доступа к временным файлам"
#: fix.go:177
msgid "Creating cache directory"
msgstr "Создание директории кэша"
#, fuzzy #, fuzzy
#~ msgid "Failed to clear contents of cache directory" #~ msgid "Failed to clear contents of cache directory"
@@ -796,13 +868,6 @@ msgstr "Создание директории кэша"
#~ msgid "Error mounting" #~ msgid "Error mounting"
#~ msgstr "Ошибка при кодировании конфигурации" #~ msgstr "Ошибка при кодировании конфигурации"
#, fuzzy
#~ msgid "Unable to create config directory"
#~ msgstr "Не удалось создать каталог конфигурации ALR"
#~ msgid "Unable to create package cache directory"
#~ msgstr "Не удалось создать каталог кэша пакетов"
#~ msgid "" #~ msgid ""
#~ "Running ALR as root is forbidden as it may cause catastrophic damage to " #~ "Running ALR as root is forbidden as it may cause catastrophic damage to "
#~ "your system" #~ "your system"

View File

@@ -1,19 +1,3 @@
// ALR - Any Linux Repository
// Copyright (C) 2025 The ALR Authors
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
// DO NOT EDIT MANUALLY. This file is generated. // DO NOT EDIT MANUALLY. This file is generated.
package alrsh package alrsh