Linux从入门到精通——CentOS 7.9.2009上Python 3.12.3的一键安装脚本
CentOS 7.9.2009上Python 3.12.3的一键安装脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | #!/bin/bash # 定义Python版本号和目录变量 PYTHON_VERSION= "3.12.3" PYTHON_BIN= "3.12" PYTHON_CURRENT_VERSION_DIR= "/usr/local/python/current" PYTHON_RELEASE_DIR= "/usr/local/python/release/python-${PYTHON_VERSION}" PYTHON_SOURCE= "Python-${PYTHON_VERSION}.tgz" # 判断执行用户是否为root,如果不是则退出 function check_root_user() { if [ "$(id -u)" != "0" ]; then echo "此脚本需要以root用户执行" 1>&2 exit 1 fi } # 安装操作系统依赖 function install_dependencies() { if [ -f /etc/redhat-release ]; then # CentOS 或 RHEL yum update -y yum install -y gcc zlib zlib-devel openssl-devel bzip2 bzip2 -devel xz-devel libffi-devel sqlite-devel ncurses-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel mesa-libGL wget elif [ -f /etc/debian_version ]; then # Ubuntu 或 Debian apt update && apt upgrade -y apt install -y build-essential zlib1g zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget else echo "不支持的Linux发行版" exit 1 fi } # 下载并解压Python源代码 function download_and_extract_python_source() { local PYTHON_SOURCE= "Python-${PYTHON_VERSION}.tgz" if [ ! -f "${PYTHON_SOURCE}" ]; then wget -O "${PYTHON_SOURCE}" "https://www.python.org/ftp/python/${PYTHON_VERSION}/${PYTHON_SOURCE}" else echo "Python源代码压缩包已存在,无需重新下载。" fi if [ -f "${PYTHON_SOURCE}" ]; then if [ -d "Python-${PYTHON_VERSION}" ]; then mv "Python-${PYTHON_VERSION}" "Python-${PYTHON_VERSION}-backup-$(date " +%Y.%m.%d-%H.%M.%S ")" fi tar -xzf "${PYTHON_SOURCE}" cd "Python-${PYTHON_VERSION}" else echo "Python源代码压缩包不存在,无法解压。" exit 1 fi } # 编译并安装Python function compile_and_install_python() { mkdir -pv "${PYTHON_RELEASE_DIR}" export CFLAGS=$(pkg-config --cflags openssl11) export LDFLAGS=$(pkg-config --libs openssl11) . /configure --prefix= "${PYTHON_RELEASE_DIR}" --with-openssl= /usr/bin/openssl #在低版本的gcc中带有?enable-optimizations参数,会报错,升级gcc至高版本,gcc 8.1.0已修复此问题 make -j$(nproc) && make install } # 验证Python版本 function verify_python_version() { PYTHON_CMD= "${PYTHON_RELEASE_DIR}/bin/python${PYTHON_BIN}" ${PYTHON_CMD} --version } # 替换系统/usr/bin/python,并修改/usr/bin/yum和/usr/libexec/urlgrabber-ext-down function replace_system_python() { if [[ -e /usr/bin/python ]]; then mv /usr/bin/python /usr/bin/python- $( /usr/bin/python --version 2>&1 | cut -d ' ' -f2 | tr -d '.' ) fi if [[ -e /usr/bin/yum ]]; then first_line=$( head -n 1 /usr/bin/yum ) if [[ $first_line == "#!/usr/bin/python" * ]]; then sed -i "1s|/usr/bin/python|/usr/bin/python2.7|" /usr/bin/yum fi fi local binyum_path= "/usr/bin/yum" if [[ -f "$binyum_path" ]]; then sed -i '1d' "$binyum_path" sed -i '1i\#\!/usr/bin/python2.7' "$binyum_path" else echo "文件 $binyum_path 不存在,无法修改。" fi local urlgrabber_path= "/usr/libexec/urlgrabber-ext-down" if [[ -f "$urlgrabber_path" ]]; then sed -i '1d' "$urlgrabber_path" sed -i '1i\#\!/usr/bin/python2.7' "$urlgrabber_path" else echo "文件 $urlgrabber_path 不存在,无法修改。" fi # 创建新的Python符号链接 ln -sfv "${PYTHON_CURRENT_VERSION_DIR}/bin/python${PYTHON_BIN}" /usr/bin/python } # 创建Python版本的软链接 function create_python_symlink() { cd /usr/local/python && ln -sfv "release/python-${PYTHON_VERSION}" current } # 设置环境变量 function set_environment_variables() { echo "export PATH=\$PATH:${PYTHON_CURRENT_VERSION_DIR}/bin" > /etc/profile .d /python .sh chmod +x /etc/profile .d /python .sh source /etc/profile .d /python .sh } # 清理下载的源代码和压缩包 function cleanup() { rm -rf "Python-${PYTHON_VERSION}" "${PYTHON_SOURCE}" } # 主执行流程 check_root_user install_dependencies download_and_extract_python_source compile_and_install_python verify_python_version replace_system_python create_python_symlink set_environment_variables #cleanup echo "Python ${PYTHON_VERSION} 安装完成,并已设置环境变量!" |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具