39 lines
910 B
Go
39 lines
910 B
Go
package soft
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
log "sunhpc/pkg/logger"
|
|
"sunhpc/pkg/utils"
|
|
)
|
|
|
|
// installViaPackageManager 使用系统包管理器安装软件
|
|
func installViaPackageManager(name, pkgType string) error {
|
|
var cmd *exec.Cmd
|
|
switch pkgType {
|
|
case "rpm":
|
|
// RHEL/CentOS
|
|
if utils.CommandExists("yum") {
|
|
cmd = exec.Command("yum", "install", "-y", name)
|
|
} else if utils.CommandExists("dnf") {
|
|
cmd = exec.Command("dnf", "install", "-y", name)
|
|
} else {
|
|
return fmt.Errorf("未找到 yum 或 dnf 包管理器")
|
|
}
|
|
case "deb":
|
|
// Debian/Ubuntu
|
|
if !utils.CommandExists("apt-get") {
|
|
return fmt.Errorf("未找到 apt-get 包管理器")
|
|
}
|
|
cmd = exec.Command("apt-get", "install", "-y", name)
|
|
default:
|
|
return fmt.Errorf("不支持的包类型: %s", pkgType)
|
|
}
|
|
|
|
cmd.Stdout = os.Stdout
|
|
cmd.Stderr = os.Stderr
|
|
log.Infof("执行命令: %s", cmd.String())
|
|
return cmd.Run()
|
|
}
|