自動升級CentOS Python至官方最新版

三角形發表於2016-08-23
 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 無法使用"

 

相關文章