Centos Upgrade Python
Centos Upgrade Python
Centos 升级指定版本Python
最近升级Python3.10, 发现centos自带ssl包版本过低, 所以在升级脚本中添加了ssl的升级过程
执行脚本完成后, 自动建立
python3pip3软连接
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