shell 判断系统版本、判断系统架构并根据架构和系统版本离线安装对应的程序 不使用lsb_release

若不使用 lsb_release,可以改用其他方法来判断系统类型、版本和架构,并根据这些信息离线安装对应的程序。以下是一个示例脚本,展示了如何使用其他命令来替代 lsb_release 并进行离线安装:

 

bash

#!/bin/bash

# 获取系统类型、版本和架构信息
get_system_info() {
    local os_type=""
    local os_version=""
    local system_architecture=$(uname -m)

    # CentOS / RHEL / Fedora
    if [[ -f /etc/redhat-release ]]; then
        os_type="CentOS"
        os_version=$(grep -oP '(?<=release )\d+(\.\d+)*' /etc/redhat-release)
    fi

    # Ubuntu / Debian
    if [[ ! "$os_type" ]] && [[ -f /etc/os-release ]]; then
        . /etc/os-release
        os_type="${ID}"
        os_version="${VERSION_ID}"
    fi

    # Kylin
    if [[ ! "$os_type" ]] && [[ -f /etc/issue ]] && grep -qE '^Kylin' /etc/issue; then
        os_type="Kylin"
        os_version=$(grep -oP '(?<=Kylin\s)(\d+\.)+\d+' /etc/issue)
    fi

    echo "$os_type $os_version $system_architecture"
}

# 示例:解析系统信息并打印
system_info=$(get_system_info)
echo "Detected system: ${system_info}"

# 根据系统类型、版本和架构进行离线安装
IFS=' ' read -ra sys_info <<< "${system_info}"
os_type="${sys_info[0]}"
os_version="${sys_info[1]}"
system_architecture="${sys_info[2]}"

case "$os_type" in
    "CentOS")
        case "$os_version" in
            "9")
                install_program_centos_9_server "$system_architecture"
                ;;
            "8")
                install_program_centos_8_server "$system_architecture"
                ;;
            "7")
                install_program_centos_7_server "$system_architecture"
                ;;
            *)
                echo "Unknown CentOS version detected."
                exit 1
                ;;
        esac
        ;;
    "Ubuntu")
        install_program_ubuntu_server "$system_architecture"
        ;;
    "Kylin")
        if [[ "$os_version" =~ ^10 ]]; then
            install_program_kylin_10_server "$system_architecture"
        else
            echo "Unknown Kylin version detected."
            exit 1
        fi
        ;;
    *)
        echo "Unsupported operating system."
        exit 1
        ;;
esac

# 定义离线安装函数,根据系统类型和架构调用
install_program_centos_9_server() {
    local arch="$1"

    # 根据 $arch,定位到对应架构的离线安装包
    local package_path="path/to/centos_9/$arch/package.rpm"

    # 使用 rpm 命令离线安装
    rpm -ivh --force --nodeps "$package_path"
}

# 类似地,定义其他系统类型的离线安装函数...

在这个示例中:

  • get_system_info 函数用于获取系统类型、版本和架构信息,不使用 lsb_release。具体做法:
    • 检查 /etc/redhat-release 文件以确定是否为 CentOS、RHEL 或 Fedora,并提取版本信息。
    • 如果不是上述系统,尝试读取 /etc/os-release 文件以确定是否为 Ubuntu 或 Debian,并提取相关信息。
    • 若仍未确定系统类型,检查 /etc/issue 文件是否存在包含 "Kylin" 字样的行,以此判断是否为 Kylin,并提取版本信息。
  • 使用 uname -m 获取系统架构信息。
  • 根据得到的系统类型、版本和架构信息,调用相应的离线安装函数。

请注意,这里的离线安装函数仅提供了基本的框架,您需要根据实际的离线安装包路径、安装命令以及可能需要的额外操作(如配置文件修改、服务启动等)进行填充和完善。同时,确保在离线安装前,所需的全部依赖包已经预先放置在适当的位置,并且安装命令能够访问到这些包。

在实际应用中,可能还需要考虑其他因素,如不同系统版本间的兼容性、特定系统的特殊安装要求等。务必根据实际情况调整离线安装流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值