github.com/caos/orbos@v1.5.14-0.20221103111702-e6cd0cea7ad4/internal/operator/nodeagent/dep/package-manager-init.go (about) 1 package dep 2 3 import ( 4 "bytes" 5 "errors" 6 "fmt" 7 "os" 8 "os/exec" 9 "strings" 10 ) 11 12 func (p *PackageManager) debSpecificUpdatePackages() error { 13 errBuf := new(bytes.Buffer) 14 defer errBuf.Reset() 15 cmd := exec.Command("apt-get", "--assume-yes", "update") 16 cmd.Stderr = errBuf 17 if p.monitor.IsVerbose() { 18 fmt.Println(strings.Join(cmd.Args, " ")) 19 cmd.Stdout = os.Stdout 20 } 21 if err := cmd.Run(); err != nil { 22 return fmt.Errorf("updating deb packages failed with stderr %s: %w", errBuf.String(), err) 23 } 24 return nil 25 } 26 func (p *PackageManager) debSpecificInit() error { 27 return p.debbasedInstall( 28 &Software{Package: "apt-transport-https"}, 29 &Software{Package: "gnupg2"}, 30 &Software{Package: "software-properties-common"}) 31 } 32 33 func (p *PackageManager) remSpecificInit() error { 34 35 if err := p.remSpecificDisableGPGRepoCheckForGcloudRepo(); err != nil { 36 return err 37 } 38 39 return p.rembasedInstall( 40 &Software{Package: "yum-utils"}, 41 &Software{Package: "yum-plugin-versionlock"}, 42 &Software{Package: "firewalld"}, 43 ) 44 } 45 46 func (p *PackageManager) remSpecificDisableGPGRepoCheckForGcloudRepo() error { 47 48 repoSpecPath := "/etc/yum.repos.d/google-cloud.repo" 49 if _, err := os.Stat(repoSpecPath); errors.Is(err, os.ErrNotExist) { 50 // Do nothing if repo file doesn't exist 51 return nil 52 } 53 54 return exec.Command("sed", "-i", "s/repo_gpgcheck=1/repo_gpgcheck=0/g", repoSpecPath).Run() 55 } 56 57 func (p *PackageManager) remSpecificUpdatePackages() error { 58 59 if err := p.remSpecificDisableGPGRepoCheckForGcloudRepo(); err != nil { 60 return err 61 } 62 63 conflictingCronFile := "/etc/cron.daily/yumupdate.sh" 64 removeConflictingCronFile := true 65 _, err := os.Stat(conflictingCronFile) 66 if err != nil { 67 if os.IsNotExist(err) { 68 removeConflictingCronFile = false 69 err = nil 70 } 71 } 72 if err != nil { 73 return err 74 } 75 if removeConflictingCronFile { 76 if err := os.Remove(conflictingCronFile); err != nil { 77 return err 78 } 79 } 80 81 cmd := exec.Command("/usr/bin/yum", "--assumeyes", "--errorlevel", "0", "--debuglevel", "3", "update") 82 errBuf := new(bytes.Buffer) 83 defer errBuf.Reset() 84 cmd.Stderr = errBuf 85 if p.monitor.IsVerbose() { 86 fmt.Println(strings.Join(cmd.Args, " ")) 87 cmd.Stdout = os.Stdout 88 } 89 if err := cmd.Run(); err != nil { 90 return fmt.Errorf("updating yum packages failed with stderr %s: %w", errBuf.String(), err) 91 } 92 return nil 93 }