安装MySQL时优先使用apt-get代替apt

This commit is contained in:
GoEdgeLab
2024-05-03 15:59:42 +08:00
parent 466107553e
commit 20348484d7

View File

@@ -88,15 +88,25 @@ func (this *MySQLInstaller) InstallFromFile(xzFilePath string, targetDir string)
}
// ubuntu apt
aptExe, err := executils.LookPath("apt")
if err == nil && len(aptExe) > 0 {
aptGetExe, err := exec.LookPath("apt-get")
if err == nil && len(aptGetExe) > 0 {
for _, lib := range []string{"libaio1", "libncurses5"} {
this.log("checking " + lib + " ...")
var cmd = utils.NewCmd("apt", "-y", "install", lib)
var cmd = utils.NewCmd(aptGetExe, "-y", "install", lib)
cmd.WithStderr()
err = cmd.Run()
if err != nil {
return errors.New("install " + lib + " failed: " + cmd.Stderr())
// try apt
aptExe, aptErr := exec.LookPath("apt")
if aptErr == nil && len(aptExe) > 0 {
cmd = utils.NewCmd(aptExe, "-y", "install", lib)
cmd.WithStderr()
err = cmd.Run()
}
if err != nil {
return errors.New("install " + lib + " failed: " + cmd.Stderr())
}
}
time.Sleep(1 * time.Second)
}
@@ -627,6 +637,13 @@ WantedBy=multi-user.target`
// install 'tar' command automatically
func (this *MySQLInstaller) installTarCommand() error {
// dnf
dnfExe, err := exec.LookPath("dnf")
if err == nil && len(dnfExe) > 0 {
var cmd = utils.NewTimeoutCmd(10*time.Second, dnfExe, "-y", "install", "tar")
return cmd.Run()
}
// yum
yumExe, err := executils.LookPath("yum")
if err == nil && len(yumExe) > 0 {
@@ -634,11 +651,19 @@ func (this *MySQLInstaller) installTarCommand() error {
return cmd.Run()
}
// apt
aptExe, err := executils.LookPath("apt")
if err == nil && len(aptExe) > 0 {
var cmd = utils.NewTimeoutCmd(10*time.Second, aptExe, "-y", "install", "tar")
return cmd.Run()
// apt-get
aptGetExe, err := exec.LookPath("apt-get")
if err == nil && len(aptGetExe) > 0 {
var cmd = utils.NewTimeoutCmd(10*time.Second, aptGetExe, "-y", "install", "tar")
err = cmd.Run()
if err != nil {
aptExe, aptErr := exec.LookPath("apt")
if aptErr == nil {
cmd = utils.NewTimeoutCmd(10*time.Second, aptExe, "-y", "install", "tar")
err = cmd.Run()
}
}
return err
}
return nil