Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
42f0d5e575 | |||
7b9404a058 |
@@ -176,8 +176,13 @@ func getBasePkgInfo(vars *alrsh.Package, input interface {
|
|||||||
OsInfoProvider
|
OsInfoProvider
|
||||||
},
|
},
|
||||||
) *nfpm.Info {
|
) *nfpm.Info {
|
||||||
|
repo := input.Repository()
|
||||||
|
// Избегаем дублирования "alr-" префикса
|
||||||
|
if strings.HasPrefix(repo, "alr-") {
|
||||||
|
repo = repo[4:] // убираем "alr-" префикс
|
||||||
|
}
|
||||||
return &nfpm.Info{
|
return &nfpm.Info{
|
||||||
Name: fmt.Sprintf("%s+alr-%s", vars.Name, input.Repository()),
|
Name: fmt.Sprintf("%s+alr-%s", vars.Name, repo),
|
||||||
Arch: cpu.Arch(),
|
Arch: cpu.Arch(),
|
||||||
Version: vars.Version,
|
Version: vars.Version,
|
||||||
Release: overrides.ReleasePlatformSpecific(vars.Release, input.OSRelease()),
|
Release: overrides.ReleasePlatformSpecific(vars.Release, input.OSRelease()),
|
||||||
|
@@ -140,16 +140,19 @@ func (a *APT) ListInstalled(opts *Opts) (map[string]string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *APT) IsInstalled(pkg string) (bool, error) {
|
func (a *APT) IsInstalled(pkg string) (bool, error) {
|
||||||
cmd := exec.Command("dpkg-query", "-l", pkg)
|
cmd := exec.Command("dpkg-query", "-f", "${Status}", "-W", pkg)
|
||||||
output, err := cmd.CombinedOutput()
|
output, err := cmd.CombinedOutput()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if exitErr, ok := err.(*exec.ExitError); ok {
|
if exitErr, ok := err.(*exec.ExitError); ok {
|
||||||
// Exit code 1 means the package is not installed
|
// Код выхода 1 означает что пакет не найден
|
||||||
if exitErr.ExitCode() == 1 {
|
if exitErr.ExitCode() == 1 {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false, fmt.Errorf("apt: isinstalled: %w, output: %s", err, output)
|
return false, fmt.Errorf("apt: isinstalled: %w, output: %s", err, output)
|
||||||
}
|
}
|
||||||
return true, nil
|
|
||||||
|
status := strings.TrimSpace(string(output))
|
||||||
|
// Проверяем что пакет действительно установлен (статус должен содержать "install ok installed")
|
||||||
|
return strings.Contains(status, "install ok installed"), nil
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user