自动安装MySQL时自动生成所需的动态库软链接

This commit is contained in:
GoEdgeLab
2023-03-20 21:32:10 +08:00
parent 90c753425a
commit 415d3290fb

View File

@@ -8,6 +8,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/setup/mysql/mysqlinstallers/utils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/setup/mysql/mysqlinstallers/utils"
stringutil "github.com/iwind/TeaGo/utils/string"
timeutil "github.com/iwind/TeaGo/utils/time" timeutil "github.com/iwind/TeaGo/utils/time"
"io" "io"
"net" "net"
@@ -106,6 +107,29 @@ func (this *MySQLInstaller) InstallFromFile(xzFilePath string, targetDir string)
time.Sleep(1 * time.Second) time.Sleep(1 * time.Second)
} }
} }
// create symbolic links
{
var libFile = "/usr/lib64/libncurses.so.5"
_, err = os.Stat(libFile)
if err != nil && os.IsNotExist(err) {
var latestLibFile = this.findLatestVersionFile("/usr/lib64", "libncurses.so.")
if len(latestLibFile) > 0 {
_ = os.Symlink(latestLibFile, libFile)
}
}
}
{
var libFile = "/usr/lib64/libtinfo.so.5"
_, err = os.Stat(libFile)
if err != nil && os.IsNotExist(err) {
var latestLibFile = this.findLatestVersionFile("/usr/lib64", "libtinfo.so.")
if len(latestLibFile) > 0 {
_ = os.Symlink(latestLibFile, libFile)
}
}
}
} }
// create 'mysql' user group // create 'mysql' user group
@@ -610,3 +634,26 @@ func (this *MySQLInstaller) lookupUserAdd() (string, error) {
} }
return "", errors.New("not found") return "", errors.New("not found")
} }
func (this *MySQLInstaller) findLatestVersionFile(dir string, prefix string) string {
files, err := filepath.Glob(filepath.Clean(dir + "/" + prefix + "*"))
if err != nil {
return ""
}
var resultFile = ""
var lastVersion = ""
var reg = regexp.MustCompile(`\.([\d.]+)`)
for _, file := range files {
var filename = filepath.Base(file)
var matches = reg.FindStringSubmatch(filename)
if len(matches) > 1 {
var version = matches[1]
if len(lastVersion) == 0 || stringutil.VersionCompare(lastVersion, version) < 0 {
lastVersion = version
resultFile = file
}
}
}
return resultFile
}