样式修改
This commit is contained in:
@@ -146,6 +146,57 @@ func (this *BaseInstaller) LookupLatestInstaller(filePrefix string) (string, err
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// LookupLatestInstallerForTarget 按目标系统优先选择安装包:
|
||||
// 1) Linux 且识别到发行版时,优先 filePrefix-{distroTag}-v*.zip(如 ubuntu22.04 / amzn2023)
|
||||
// 2) 回退 filePrefix-v*.zip(通用包)
|
||||
func (this *BaseInstaller) LookupLatestInstallerForTarget(filePrefix string, env *Env) (string, error) {
|
||||
if env != nil && env.OS == "linux" {
|
||||
distroTag, err := this.detectLinuxDistroTag()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if len(distroTag) > 0 {
|
||||
zipFile, err := this.LookupLatestInstaller(filePrefix + "-" + distroTag)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if len(zipFile) > 0 {
|
||||
return zipFile, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return this.LookupLatestInstaller(filePrefix)
|
||||
}
|
||||
|
||||
// detectLinuxDistroTag 识别远端 Linux 发行版标签(用于选择发行版定制安装包)。
|
||||
// 当前支持:ubuntu22.04 / amzn2023;其他系统返回空字符串(回退通用包)。
|
||||
func (this *BaseInstaller) detectLinuxDistroTag() (string, error) {
|
||||
if this.client == nil {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
releaseData, stderr, err := this.client.Exec("cat /etc/os-release")
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("read /etc/os-release failed: %w, stderr: %s", err, stderr)
|
||||
}
|
||||
if len(strings.TrimSpace(releaseData)) == 0 {
|
||||
return "", nil
|
||||
}
|
||||
|
||||
releaseMap := parseOSRelease(releaseData)
|
||||
id := strings.ToLower(strings.TrimSpace(releaseMap["ID"]))
|
||||
versionID := strings.TrimSpace(releaseMap["VERSION_ID"])
|
||||
|
||||
switch {
|
||||
case id == "ubuntu" && strings.HasPrefix(versionID, "22.04"):
|
||||
return "ubuntu22.04", nil
|
||||
case id == "amzn" && strings.HasPrefix(versionID, "2023"):
|
||||
return "amzn2023", nil
|
||||
default:
|
||||
return "", nil
|
||||
}
|
||||
}
|
||||
|
||||
// InstallHelper 上传安装助手
|
||||
func (this *BaseInstaller) InstallHelper(targetDir string, role nodeconfigs.NodeRole) (env *Env, err error) {
|
||||
var uname = this.uname()
|
||||
|
||||
@@ -47,12 +47,12 @@ func (this *NodeInstaller) Install(dir string, params interface{}, installStatus
|
||||
|
||||
// 上传安装文件
|
||||
var filePrefix = "edge-node-" + env.OS + "-" + env.Arch
|
||||
zipFile, err := this.LookupLatestInstaller(filePrefix)
|
||||
zipFile, err := this.LookupLatestInstallerForTarget(filePrefix, env)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(zipFile) == 0 {
|
||||
return errors.New("can not find installer file for " + env.OS + "/" + env.Arch)
|
||||
return errors.New("can not find installer file for " + env.OS + "/" + env.Arch + ", expected '" + filePrefix + "-v*.zip' or distro-specific '" + filePrefix + "-{ubuntu22.04|amzn2023}-v*.zip'")
|
||||
}
|
||||
var targetZip = ""
|
||||
var firstCopyErr error
|
||||
|
||||
@@ -49,12 +49,12 @@ func (this *NSNodeInstaller) Install(dir string, params interface{}, installStat
|
||||
|
||||
// 上传安装文件
|
||||
filePrefix := "edge-dns-" + env.OS + "-" + env.Arch
|
||||
zipFile, err := this.LookupLatestInstaller(filePrefix)
|
||||
zipFile, err := this.LookupLatestInstallerForTarget(filePrefix, env)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(zipFile) == 0 {
|
||||
return errors.New("can not find installer file for " + env.OS + "/" + env.Arch)
|
||||
return errors.New("can not find installer file for " + env.OS + "/" + env.Arch + ", expected '" + filePrefix + "-v*.zip' or distro-specific '" + filePrefix + "-{ubuntu22.04|amzn2023}-v*.zip'")
|
||||
}
|
||||
var targetZip = ""
|
||||
var firstCopyErr error
|
||||
|
||||
Reference in New Issue
Block a user