Centos Upgrade Python

Centos Upgrade Python

Centos 升级指定版本Python

最近升级Python3.10, 发现centos自带ssl包版本过低, 所以在升级脚本中添加了ssl的升级过程

执行脚本完成后, 自动建立 python3 pip3 软连接

  1
  2#!/bin/bash
  3
  4
  5function log(){
  6    echo -e "\033[31m" ">>>>>> " $(date +"%Y-%m-%d %H:%M:%S") $@ " <<<<<<" "\033[0m"
  7    sleep 2
  8}
  9
 10
 11parent_dir=$(pwd)/
 12
 13
 14# 基础变量
 15install_python_version=3.10.0
 16install_openssl_version=1.1.1l
 17
 18
 19shortver=${install_python_version%.*}
 20doubleshort=${shortver/./}
 21python_packagename=Python-${install_python_version}
 22local_python_dir=/usr/local/${python_packagename}/
 23pyM=/usr/bin/python${install_python_version%%.*}
 24piM=/usr/bin/pip${install_python_version%%.*}
 25pyN=/usr/bin/python${doubleshort}
 26piN=/usr/bin/pip${doubleshort}
 27
 28
 29# https://www.openssl.org/source/openssl-3.0.0.tar.gz
 30# https://www.openssl.org/source/openssl-1.1.1l.tar.gz
 31openssl_packagename=openssl-${install_openssl_version}
 32
 33
 34# centos环境升级
 35# log "yum libary"
 36# yum update
 37# yum install -y gcc libffi-devel zlib* openssl-devel libffi-devel \
 38#     zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
 39
 40
 41# debian环境升级
 42#apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev
 43#    tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev
 44
 45
 46# 建立软件包目录
 47log "mkdir sofrware dir and into"
 48soft_dir=${parent_dir}soft/
 49[[ ! -d "${soft_dir}" ]] && mkdir -p "${soft_dir}"
 50pushd ${soft_dir}
 51
 52
 53# 移除备份旧文件
 54log "remove old files"
 55rm -fr ${python_packagename}
 56rm -fr ${local_python_dir}
 57[[ -f ${pyM} ]] && mv -f ${pyM}{,.bak}
 58[[ -f ${piM} ]] && mv -f ${piM}{,.bak}
 59[[ -f ${pyN} ]] && mv -f ${pyN}{,.bak}
 60[[ -f ${piN} ]] && mv -f ${piN}{,.bak}
 61
 62
 63# 下载新版源码
 64log "curl openssl and python source, then untar"
 65pyurl=https://www.python.org/ftp/python/${install_python_version}/${python_packagename}.tgz
 66log ${pyurl}
 67if [[ ! -f "${soft_dir}${python_packagename}.tgz" ]]; then
 68    curl -O ${pyurl}
 69fi
 70if [[ ! -f "${soft_dir}${python_packagename}.tgz" ]]; then
 71    log ${python_packagename}.tgz Download Failed
 72fi
 73tar -zxvf ${soft_dir}${python_packagename}.tgz
 74
 75
 76opurl=https://www.openssl.org/source/${openssl_packagename}.tar.gz
 77log opurl
 78if [[ ! -f "${soft_dir}${openssl_packagename}.tar.gz" ]]; then
 79    curl -O ${opurl}
 80    exit 1
 81fi
 82if [[ ! -f "${soft_dir}${openssl_packagename}.tar.gz" ]]; then
 83    log ${openssl_packagename}.tar.gz Download Failed
 84    exit 1
 85fi
 86tar -zxvf ${soft_dir}${openssl_packagename}.tar.gz
 87
 88
 89# 安装新openssl
 90log "install new openssl"
 91sslcnf=$(find /etc/ -name openssl.cnf -printf "%h\n")
 92pushd ${openssl_packagename}
 93./config --prefix=/usr/local/custom-openssl --libdir=lib --openssldir=${sslcnf}
 94make -j1 depend
 95make -j8
 96make install_sw
 97popd
 98
 99
100# 解压源码, 编译安装
101log "into source dir and compile python"
102pushd ${python_packagename}
103./configure -C --with-openssl=/usr/local/custom-openssl --with-openssl-rpath=auto --prefix=${local_python_dir}
104make -j8
105make altinstall
106popd
107
108
109# 建立链接文件
110log "link executable files"
111ln -s ${local_python_dir}bin/python${shortver} ${pyM}
112ln -s ${local_python_dir}bin/python${shortver} ${pyN}
113ln -s ${local_python_dir}bin/pip${shortver} ${piM}
114ln -s ${local_python_dir}bin/pip${shortver} ${piN}
115
116
117# 升级环境包
118log "upgrade pip"
119${piN} install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip
120
121
122# 设置腾讯源
123${piN} config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple