1 #!/bin/bash 2 3 # 1、檢查當前系統Python版本 4 5 python_old_version=$(python -V 2>&1 | awk '{print $2}') 6 echo "當前系統Python版本為: $python_old_version" 7 8 # 2、檢查當前系統網路連線,是否能夠訪問Python映象站點 9 10 curl -s -k -I http://mirrors.sohu.com/python/ |grep '200 OK' >/dev/null 11 if [ $? != 0 ] 12 then 13 echo 無法訪問Python映象站點,請檢查網路連線 14 exit 1 15 fi 16 17 # 3、獲取Python官方最新版本資訊 18 19 python_last_27version=$(curl -s -k http://mirrors.sohu.com/python/ |awk -F '/|>' '{print $3}' |grep '^2.7.*' |sort -t '.' -k3 -n |tail -1) 20 echo "官方最新Python2.7版本為:$python_last_27version" 21 22 # 4、對比當前系統Python版本與官方最新版本號 23 24 if [ $python_old_version = $python_last_27version ] 25 then 26 echo '當前已是最新版本,無需升級' 27 exit 0 28 fi 29 30 # 5、下載最新版本Python安裝包 31 32 yum install -y wget readline readline-devel 33 mkdir -p /tmp/python_tmp_dir 34 wget -P /tmp/python_tmp_dir/ http://mirrors.sohu.com/python/$python_last_27version/Python-$python_last_27version.tar.xz 35 36 # 6、解壓Python原始碼包 37 38 tar xf /tmp/python_tmp_dir/Python-$python_last_27version.tar.xz -C /tmp/python_tmp_dir/ 39 40 # 7、編譯前的準備工作:準備安裝目錄 41 42 mkdir -p /usr/local/python27 43 cd /tmp/python_tmp_dir/Python-$python_last_27version 44 ./configure --prefix=/usr/local/python27 45 46 # 8、編譯並安裝Python 47 48 make -j$(cat /proc/cpuinfo | grep processor |wc -l) && make install 49 50 # 9、升級Python至官方最新版 51 52 mv /usr/bin/python /usr/bin/python$python_old_version 53 ln -s /usr/local/python27/bin/python /usr/bin/python 54 55 # 10、清理安裝過程中產生的檔案 56 57 rm -rf /tmp/python_tmp_dir/ 58 59 # 11、預設只升級python會導致yum不可用,此處自動修復該問題 60 61 sed -i '1s@#!/usr/bin/python@#!/usr/bin/python'$python_old_version'@' /usr/bin/yum 62 sed -i '1s@#!/usr/bin/python@#!/usr/bin/python'$python_old_version'@' /usr/libexec/urlgrabber-ext-down &>/dev/null 63 yum --version &>/dev/null && echo "Python 升級對 YUM 無影響" || echo "Python 升級導致 YUM 無法使用"