核心工具:yum/dnf(包管理器)、update-alternatives(全局切换)、scl(Software Collections,多版本共存)。
yum/dnf安装指定版本:通过package-name-version语法直接安装特定版本(需仓库支持)。例如:sudo yum install httpd-2.4.6 # 安装Apache 2.4.6
sudo dnf install python3.9.16 # 安装Python 3.9.16(CentOS 8+)
update-alternatives全局切换:将不同版本的软件注册到系统,通过优先级管理默认版本。例如管理Python 3:sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 # 注册Python 3.8
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 2 # 注册Python 3.9
sudo update-alternatives --config python3 # 交互式选择默认版本
scl工具多版本共存:适用于需要同时运行多个版本的场景(如开发测试)。例如启用Python 3.8:sudo yum install centos-release-scl # 添加SCL仓库
sudo yum install rh-python38 # 安装Python 3.8
scl enable rh-python38 bash # 临时激活(仅当前shell有效)
激活后,python --version将显示3.8版本,退出shell后恢复默认。常用方法:update-alternatives(系统级)、环境变量/alias(用户级)。
update-alternatives全局配置:注册多个JDK版本,通过优先级切换默认版本。例如:sudo update-alternatives --install /usr/bin/java java /usr/java/jdk1.8.0_202/bin/java 1
sudo update-alternatives --install /usr/bin/java java /usr/java/jdk-11.0.15/bin/java 2
sudo update-alternatives --config java # 选择默认JDK
~/.bash_profile或/etc/profile,通过alias快速切换。例如:alias java8='export JAVA_HOME=/usr/java/jdk1.8.0_202; export PATH=$JAVA_HOME/bin:$PATH'
alias java11='export JAVA_HOME=/usr/java/jdk-11.0.15; export PATH=$JAVA_HOME/bin:$PATH'
source ~/.bash_profile # 生效配置
java8 # 临时切换至Java 8
验证版本:java -version。推荐工具:pyenv(灵活)、Anaconda(科学计算)、手动编译(基础)。
pyenv安装与管理:# 安装依赖
sudo yum install -y git gcc zlib-devel bzip2-devel readline-devel sqlite-devel openssl-devel
# 安装pyenv
curl https://pyenv.run | bash
# 配置环境变量(~/.bashrc)
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc
# 安装与切换版本
pyenv install 3.8.10 # 安装Python 3.8.10
pyenv install 3.9.5 # 安装Python 3.9.5
pyenv global 3.8.10 # 设置全局默认版本
pyenv local 3.9.5 # 当前目录使用指定版本(生成.python-version文件)
Anaconda环境管理:# 下载并安装Anaconda
wget https://repo.anaconda.com/archive/Anaconda3-2023.07-2-Linux-x86_64.sh
bash Anaconda3-2023.07-2-Linux-x86_64.sh
# 创建与管理环境
conda create -n py38 python=3.8 # 创建Python 3.8环境
conda activate py38 # 激活环境
conda deactivate # 退出环境
# 安装依赖
sudo yum install -y zlib-devel bzip2-devel openssl-devel
# 下载并编译
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
tar xzf Python-3.9.5.tgz
cd Python-3.9.5
./configure --enable-optimizations
make altinstall # 避免覆盖系统Python
# 使用update-alternatives管理
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.9 1
sudo update-alternatives --config python3 # 切换版本
关键步骤:安装多版本、配置不同端口、启动对应服务。
sudo yum install httpd-2.4 httpd-2.2 # 安装Apache 2.4和2.2
# Apache 2.4配置(/etc/httpd/conf.d/httpd24.conf)
Listen 8080
ServerName localhost:8080
IncludeOptional conf.modules.d/*.load
IncludeOptional conf.modules.d/*.conf
# Apache 2.2配置(/etc/httpd/conf.d/httpd22.conf)
Listen 8081
ServerName localhost:8081
Include conf/httpd.conf
sudo systemctl start httpd24 # 启动Apache 2.4
sudo systemctl stop httpd24 # 停止Apache 2.4
sudo systemctl start httpd22 # 启动Apache 2.2
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp # 开放端口
sudo firewall-cmd --permanent --zone=public --add-port=8081/tcp
sudo firewall-cmd --reload
测试访问:http://localhost:8080(Apache 2.4)、http://localhost:8081(Apache 2.2)。zlib-devel、openssl-devel)。altinstall或别名解决。update-alternatives为系统级切换,pyenv/conda为用户级或项目级切换,根据需求选择。