fix: removeAlreadyInstalled before FindPkgs

This commit is contained in:
2025-01-19 11:49:00 +03:00
parent e497d41030
commit 2d6504b329
13 changed files with 386 additions and 156 deletions

View File

@ -19,14 +19,13 @@
package manager
import (
"bufio"
"fmt"
"os/exec"
"strings"
)
// DNF представляет менеджер пакетов DNF
type DNF struct {
CommonRPM
rootCmd string // rootCmd хранит команду, используемую для выполнения команд с правами root
}
@ -120,39 +119,6 @@ func (d *DNF) UpgradeAll(opts *Opts) error {
return nil
}
// ListInstalled возвращает список установленных пакетов и их версий
func (d *DNF) ListInstalled(opts *Opts) (map[string]string, error) {
out := map[string]string{}
cmd := exec.Command("rpm", "-qa", "--queryformat", "%{NAME}\u200b%|EPOCH?{%{EPOCH}:}:{}|%{VERSION}-%{RELEASE}\\n")
stdout, err := cmd.StdoutPipe()
if err != nil {
return nil, err
}
err = cmd.Start()
if err != nil {
return nil, err
}
scanner := bufio.NewScanner(stdout)
for scanner.Scan() {
name, version, ok := strings.Cut(scanner.Text(), "\u200b")
if !ok {
continue
}
version = strings.TrimPrefix(version, "0:")
out[name] = version
}
err = scanner.Err()
if err != nil {
return nil, err
}
return out, nil
}
// getCmd создает и возвращает команду exec.Cmd для менеджера пакетов DNF
func (d *DNF) getCmd(opts *Opts, mgrCmd string, args ...string) *exec.Cmd {
var cmd *exec.Cmd