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  }