github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/nodeagent/dep/package-manager-remove.go (about) 1 package dep 2 3 import ( 4 "bytes" 5 "fmt" 6 "os/exec" 7 "strings" 8 ) 9 10 func (p *PackageManager) rembasedRemove(remove ...*Software) error { 11 12 if len(remove) == 0 { 13 return nil 14 } 15 16 swStrs := make([]string, len(remove)) 17 for i, sw := range remove { 18 swStrs[i] = sw.Package 19 if sw.Version != "" { 20 swStrs[i] = fmt.Sprintf("%s-%s", sw.Package, sw.Version) 21 } 22 } 23 24 errBuf := new(bytes.Buffer) 25 defer errBuf.Reset() 26 outBuf := new(bytes.Buffer) 27 defer outBuf.Reset() 28 29 cmd := exec.Command("yum", append([]string{"--assumeyes", "remove"}, swStrs...)...) 30 cmd.Stderr = errBuf 31 cmd.Stdout = outBuf 32 err := cmd.Run() 33 errStr := errBuf.String() 34 outStr := outBuf.String() 35 p.monitor.WithFields(map[string]interface{}{ 36 "command": fmt.Sprintf("'%s'", strings.Join(cmd.Args, "' '")), 37 "stdout": outStr, 38 "stderr": errStr, 39 }).Debug("Executed yum remove") 40 if err != nil { 41 return fmt.Errorf("removing yum packages [%s] failed with stderr %s: %w", strings.Join(swStrs, ", "), errStr, err) 42 } 43 return nil 44 }