fix(install): 修复红帽系发行版下redis安装

Refactor install_rhel function to improve package installation logic for RHEL/CentOS versions 7, 8, and 9.
This commit is contained in:
ClovertaTheTrilobita 2025-10-16 22:57:43 +03:00 committed by GitHub
parent 11eea53885
commit 04ce5c3538
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -129,23 +129,62 @@ install_arch() {
install_rhel() {
local package=$1
local SUDO=$(need_sudo)
set -e
local PM
if command -v dnf >/dev/null 2>&1; then PM=dnf; else PM=yum; fi
# 识别 RHEL/CentOS 主版本号7/8/9
local ELVER; ELVER="$(rpm -E %rhel 2>/dev/null || echo 0)"
# 优先 dnf旧版用 yum。RHEL/CentOS/Fedora 的 python3 自带 venv
if command -v dnf >/dev/null 2>&1; then
if [[ "$package" = "python" ]]; then
if command -v dnf >/dev/null 2>&1; then
$SUDO dnf -y install python3 python3-pip
# 开发工具组(可选)
elif [[ "$package" = "redis" ]]; then
$SUDO dnf -y install redis
fi
$SUDO dnf -y groupinstall "Development Tools" || true
else
if [[ "$package" = "python" ]]; then
$SUDO yum -y install python3 python3-pip || true
elif [[ "$package" = "redis" ]]; then
$SUDO yum install -y redis
fi
$SUDO yum -y groupinstall "Development Tools" || true
fi
elif [[ "$package" = "redis" ]]; then
if [ "$ELVER" -eq 7 ]; then
sudo $PM install -y epel-release
sudo $PM install -y redis
elif [ "$ELVER" -eq 8 ]; then
sudo $PM install -y epel-release
# 启用 PowerToolsEL8
if command -v dnf >/dev/null 2>&1; then
sudo dnf config-manager --set-enabled powertools || true
else
sudo yum install -y dnf-plugins-core || true
sudo yum config-manager --set-enabled powertools || true
fi
# 启用 AppStream 模块里的 redis常见是 6
sudo dnf -y module reset redis 2>/dev/null || true
sudo dnf -y module enable redis:6 2>/dev/null || true
sudo $PM install -y redis
else # EL9 及以上CentOS Stream 9 / RHEL 9
sudo $PM install -y epel-release
# 启用 CRBEL9 的 PowerTools
if command -v dnf >/dev/null 2>&1; then
sudo dnf config-manager --set-enabled crb || true
fi
# 先尝试 EPEL 提供的 redis有的镜像没有
if ! sudo $PM install -y redis; then
# 回退到 Remi 仓库(提供 redis:7
sudo $PM install -y https://rpms.remirepo.net/enterprise/remi-release-9.rpm
sudo dnf -y module reset redis || true
sudo dnf -y module enable redis:7 || true
sudo $PM install -y redis
fi
fi
# 安装后启动服务(不同发行服务名不同)
if command -v systemctl >/dev/null 2>&1; then
sudo systemctl enable --now redis 2>/dev/null || \
sudo systemctl enable --now redis-server 2>/dev/null || true
fi
fi
}
install_python_venv() {