From ac1e270f55e4352046033d82de00089d5efcb5b1 Mon Sep 17 00:00:00 2001 From: mhsanaei Date: Fri, 21 Mar 2025 16:30:31 +0100 Subject: [PATCH] glibc version replace with OS check --- install.sh | 89 ++++++++--------------------------------------------- x-ui.sh | 90 ++++++++---------------------------------------------- 2 files changed, 26 insertions(+), 153 deletions(-) diff --git a/install.sh b/install.sh index cf191baa..84e57c8a 100644 --- a/install.sh +++ b/install.sh @@ -14,10 +14,10 @@ cur_dir=$(pwd) # Check OS and set release variable if [[ -f /etc/os-release ]]; then source /etc/os-release - release=$ID + release=$PRETTY_NAME elif [[ -f /usr/lib/os-release ]]; then source /usr/lib/os-release - release=$ID + release=$PRETTY_NAME else echo "Failed to check the system OS, please contact the author!" >&2 exit 1 @@ -39,81 +39,18 @@ arch() { echo "arch: $(arch)" -os_version="" -os_version=$(grep "^VERSION_ID" /etc/os-release | cut -d '=' -f2 | tr -d '"' | tr -d '.') - -if [[ "${release}" == "arch" ]]; then - echo "Your OS is Arch Linux" -elif [[ "${release}" == "parch" ]]; then - echo "Your OS is Parch Linux" -elif [[ "${release}" == "manjaro" ]]; then - echo "Your OS is Manjaro" -elif [[ "${release}" == "armbian" ]]; then - echo "Your OS is Armbian" -elif [[ "${release}" == "alpine" ]]; then - echo "Your OS is Alpine Linux" -elif [[ "${release}" == "opensuse-tumbleweed" ]]; then - echo "Your OS is OpenSUSE Tumbleweed" -elif [[ "${release}" == "openEuler" ]]; then - if [[ ${os_version} -lt 2203 ]]; then - echo -e "${red} Please use OpenEuler 22.03 or higher ${plain}\n" && exit 1 +check_glibc_version() { + glibc_version=$(ldd --version | head -n1 | awk '{print $NF}') + + required_version="2.32" + if [[ "$(printf '%s\n' "$required_version" "$glibc_version" | sort -V | head -n1)" != "$required_version" ]]; then + echo -e "${red}GLIBC version $glibc_version is too old! Required: 2.32 or higher${plain}" + echo "Please upgrade to a newer version of your operating system to get a higher GLIBC version." + exit 1 fi -elif [[ "${release}" == "centos" ]]; then - if [[ ${os_version} -lt 8 ]]; then - echo -e "${red} Please use CentOS 8 or higher ${plain}\n" && exit 1 - fi -elif [[ "${release}" == "ubuntu" ]]; then - if [[ ${os_version} -lt 2204 ]]; then - echo -e "${red} Please use Ubuntu 22 or higher version!${plain}\n" && exit 1 - fi -elif [[ "${release}" == "fedora" ]]; then - if [[ ${os_version} -lt 36 ]]; then - echo -e "${red} Please use Fedora 36 or higher version!${plain}\n" && exit 1 - fi -elif [[ "${release}" == "amzn" ]]; then - if [[ ${os_version} != "2023" ]]; then - echo -e "${red} Please use Amazon Linux 2023!${plain}\n" && exit 1 - fi -elif [[ "${release}" == "debian" ]]; then - if [[ ${os_version} -lt 12 ]]; then - echo -e "${red} Please use Debian 12 or higher ${plain}\n" && exit 1 - fi -elif [[ "${release}" == "almalinux" ]]; then - if [[ ${os_version} -lt 95 ]]; then - echo -e "${red} Please use AlmaLinux 9.5 or higher ${plain}\n" && exit 1 - fi -elif [[ "${release}" == "rocky" ]]; then - if [[ ${os_version} -lt 95 ]]; then - echo -e "${red} Please use Rocky Linux 9.5 or higher ${plain}\n" && exit 1 - fi -elif [[ "${release}" == "ol" ]]; then - if [[ ${os_version} -lt 8 ]]; then - echo -e "${red} Please use Oracle Linux 8 or higher ${plain}\n" && exit 1 - fi -elif [[ "${release}" == "virtuozzo" ]]; then - if [[ ${os_version} -lt 8 ]]; then - echo -e "${red} Please use Virtuozzo Linux 8 or higher ${plain}\n" && exit 1 - fi -else - echo -e "${red}Your operating system is not supported by this script.${plain}\n" - echo "Please ensure you are using one of the following supported operating systems:" - echo "- Ubuntu 22.04+" - echo "- Debian 12+" - echo "- CentOS 8+" - echo "- OpenEuler 22.03+" - echo "- Fedora 36+" - echo "- Arch Linux" - echo "- Parch Linux" - echo "- Manjaro" - echo "- Armbian" - echo "- AlmaLinux 9.5+" - echo "- Rocky Linux 9.5+" - echo "- Oracle Linux 8+" - echo "- OpenSUSE Tumbleweed" - echo "- Amazon Linux 2023" - echo "- Virtuozzo Linux 8+" - exit 1 -fi + echo "GLIBC version: $glibc_version (meets requirement of 2.32+)" +} +check_glibc_version install_base() { case "${release}" in diff --git a/x-ui.sh b/x-ui.sh index d615e04e..4f40685a 100644 --- a/x-ui.sh +++ b/x-ui.sh @@ -25,92 +25,28 @@ function LOGI() { # Check OS and set release variable if [[ -f /etc/os-release ]]; then source /etc/os-release - release=$ID + release=$PRETTY_NAME elif [[ -f /usr/lib/os-release ]]; then source /usr/lib/os-release - release=$ID + release=$PRETTY_NAME else echo "Failed to check the system OS, please contact the author!" >&2 exit 1 fi - echo "The OS release is: $release" -os_version="" -os_version=$(grep "^VERSION_ID" /etc/os-release | cut -d '=' -f2 | tr -d '"' | tr -d '.') - -if [[ "${release}" == "arch" ]]; then - echo "Your OS is Arch Linux" -elif [[ "${release}" == "parch" ]]; then - echo "Your OS is Parch Linux" -elif [[ "${release}" == "manjaro" ]]; then - echo "Your OS is Manjaro" -elif [[ "${release}" == "armbian" ]]; then - echo "Your OS is Armbian" -elif [[ "${release}" == "alpine" ]]; then - echo "Your OS is Alpine Linux" -elif [[ "${release}" == "opensuse-tumbleweed" ]]; then - echo "Your OS is OpenSUSE Tumbleweed" -elif [[ "${release}" == "openEuler" ]]; then - if [[ ${os_version} -lt 2203 ]]; then - echo -e "${red} Please use OpenEuler 22.03 or higher ${plain}\n" && exit 1 +check_glibc_version() { + glibc_version=$(ldd --version | head -n1 | awk '{print $NF}') + + required_version="2.32" + if [[ "$(printf '%s\n' "$required_version" "$glibc_version" | sort -V | head -n1)" != "$required_version" ]]; then + echo -e "${red}GLIBC version $glibc_version is too old! Required: 2.32 or higher${plain}" + echo "Please upgrade to a newer version of your operating system to get a higher GLIBC version." + exit 1 fi -elif [[ "${release}" == "centos" ]]; then - if [[ ${os_version} -lt 8 ]]; then - echo -e "${red} Please use CentOS 8 or higher ${plain}\n" && exit 1 - fi -elif [[ "${release}" == "ubuntu" ]]; then - if [[ ${os_version} -lt 2204 ]]; then - echo -e "${red} Please use Ubuntu 22 or higher version!${plain}\n" && exit 1 - fi -elif [[ "${release}" == "fedora" ]]; then - if [[ ${os_version} -lt 36 ]]; then - echo -e "${red} Please use Fedora 36 or higher version!${plain}\n" && exit 1 - fi -elif [[ "${release}" == "amzn" ]]; then - if [[ ${os_version} != "2023" ]]; then - echo -e "${red} Please use Amazon Linux 2023!${plain}\n" && exit 1 - fi -elif [[ "${release}" == "debian" ]]; then - if [[ ${os_version} -lt 12 ]]; then - echo -e "${red} Please use Debian 12 or higher ${plain}\n" && exit 1 - fi -elif [[ "${release}" == "almalinux" ]]; then - if [[ ${os_version} -lt 95 ]]; then - echo -e "${red} Please use AlmaLinux 9.5 or higher ${plain}\n" && exit 1 - fi -elif [[ "${release}" == "rocky" ]]; then - if [[ ${os_version} -lt 95 ]]; then - echo -e "${red} Please use Rocky Linux 9.5 or higher ${plain}\n" && exit 1 - fi -elif [[ "${release}" == "ol" ]]; then - if [[ ${os_version} -lt 8 ]]; then - echo -e "${red} Please use Oracle Linux 8 or higher ${plain}\n" && exit 1 - fi -elif [[ "${release}" == "virtuozzo" ]]; then - if [[ ${os_version} -lt 8 ]]; then - echo -e "${red} Please use Virtuozzo Linux 8 or higher ${plain}\n" && exit 1 - fi -else - echo -e "${red}Your operating system is not supported by this script.${plain}\n" - echo "Please ensure you are using one of the following supported operating systems:" - echo "- Ubuntu 22.04+" - echo "- Debian 12+" - echo "- CentOS 8+" - echo "- OpenEuler 22.03+" - echo "- Fedora 36+" - echo "- Arch Linux" - echo "- Parch Linux" - echo "- Manjaro" - echo "- Armbian" - echo "- AlmaLinux 9.5+" - echo "- Rocky Linux 9.5+" - echo "- Oracle Linux 8+" - echo "- OpenSUSE Tumbleweed" - echo "- Amazon Linux 2023" - echo "- Virtuozzo Linux 8+" - exit 1 -fi + echo "GLIBC version: $glibc_version (meets requirement of 2.32+)" +} +check_glibc_version # Declare Variables log_folder="${XUI_LOG_FOLDER:=/var/log}"