linux升级python到2.7版本
linux的python安装包默认版本是2.6.6,yum程序默认也是依赖这个版本的python包的,但是其他一些程序如nodejs,却要的是2.7版本,因此必须要考虑升级后与yum的兼容问题。两步走,先升级python,再兼容yum:
下载python的2.7版本:
[root@centos ~]# cd /usr/local/src [root@centos src]# wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz --2019-11-01 17:28:55-- https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz Resolving www.python.org... 151.101.108.223, 2a04:4e42:a::223 Connecting to www.python.org|151.101.108.223|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 16768806 (16M) [application/octet-stream] Saving to: “Python-2.7.10.tgz” 4% [====> ] 670,943 6.86K/s eta 39m 50s 10% [============> ] 1,791,740 19.2K/s eta 28m 3s 34% [===========================================> ] 5,849,199 42.7K/s eta 9m 22s 66% [===================================================================================> ] 11,109,885 33.2K/s eta 3m 25s 91% [===================================================================================================================> ] 15,381,928 43.1K/s eta 45s 100%[==============================================================================================================================>] 16,768,806 53.8K/s in 8m 54s 2019-11-01 17:37:50 (30.7 KB/s) - “Python-2.7.10.tgz” saved [16768806/16768806]
解压、编译:
[root@centos src]# tar -zxvf Python-2.7.10.tgz [root@centos src]# cd Python-2.7.10 [root@entos Python-2.7.10]# ./configure --enable-shared --enable-loadable-sqlite-extensions \ > --prefix=/usr/local/python27 \ > --with-zlib \ > --with-ssl configure: WARNING: unrecognized options: --enable-loadable-sqlite-extensions, --with-zlib, --with-ssl checking build system type... i686-pc-linux-gnu checking host system type... i686-pc-linux-gnu checking for --enable-universalsdk... no checking for --with-universal-archs... 32-bit checking MACHDEP... linux2 checking EXTRAPLATDIR... checking for --without-gcc... no checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in `/usr/local/src/Python-2.7.10': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details
好吧,编译失败,提示没有C编译器,安装gcc:
[root@centos Python-2.7.10]# yum install gcc Loaded plugins: fastestmirror, security Setting up Install Process Loading mirror speeds from cached hostfile epel | 5.3 kB 00:00 extras | 3.3 kB 00:00 os | 3.7 kB 00:00 updates | 3.4 kB 00:00 Resolving Dependencies --> Running transaction check ---> Package gcc.i686 0:4.4.7-23.el6 will be installed --> Processing Dependency: libgomp = 4.4.7-23.el6 for package: gcc-4.4.7-23.el6.i686 --> Processing Dependency: cpp = 4.4.7-23.el6 for package: gcc-4.4.7-23.el6.i686 --> Processing Dependency: libgcc >= 4.4.7-23.el6 for package: gcc-4.4.7-23.el6.i686 --> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.4.7-23.el6.i686 --> Processing Dependency: cloog-ppl >= 0.15 for package: gcc-4.4.7-23.el6.i686 --> Processing Dependency: libgomp.so.1 for package: gcc-4.4.7-23.el6.i686 --> Running transaction check ---> Package cloog-ppl.i686 0:0.15.7-1.2.el6 will be installed --> Processing Dependency: libppl_c.so.2 for package: cloog-ppl-0.15.7-1.2.el6.i686 --> Processing Dependency: libppl.so.7 for package: cloog-ppl-0.15.7-1.2.el6.i686 ---> Package cpp.i686 0:4.4.7-23.el6 will be installed --> Processing Dependency: libmpfr.so.1 for package: cpp-4.4.7-23.el6.i686 ---> Package glibc-devel.i686 0:2.12-1.212.el6_10.3 will be installed --> Processing Dependency: glibc-headers = 2.12-1.212.el6_10.3 for package: glibc-devel-2.12-1.212.el6_10.3.i686 --> Processing Dependency: glibc = 2.12-1.212.el6_10.3 for package: glibc-devel-2.12-1.212.el6_10.3.i686 --> Processing Dependency: glibc-headers for package: glibc-devel-2.12-1.212.el6_10.3.i686 ---> Package libgcc.i686 0:4.4.7-18.el6 will be updated ---> Package libgcc.i686 0:4.4.7-23.el6 will be an update ---> Package libgomp.i686 0:4.4.7-23.el6 will be installed --> Running transaction check ---> Package glibc.i686 0:2.12-1.209.el6 will be updated --> Processing Dependency: glibc = 2.12-1.209.el6 for package: glibc-common-2.12-1.209.el6.i686 ---> Package glibc.i686 0:2.12-1.212.el6_10.3 will be an update ---> Package glibc-headers.i686 0:2.12-1.212.el6_10.3 will be installed --> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.12-1.212.el6_10.3.i686 --> Processing Dependency: kernel-headers for package: glibc-headers-2.12-1.212.el6_10.3.i686 ---> Package mpfr.i686 0:2.4.1-6.el6 will be installed ---> Package ppl.i686 0:0.10.2-11.el6 will be installed --> Running transaction check ---> Package glibc-common.i686 0:2.12-1.209.el6 will be updated ---> Package glibc-common.i686 0:2.12-1.212.el6_10.3 will be an update ---> Package kernel-headers.i686 0:2.6.32-754.23.1.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Installing: gcc i686 4.4.7-23.el6 os 8.2 M Installing for dependencies: cloog-ppl i686 0.15.7-1.2.el6 os 93 k cpp i686 4.4.7-23.el6 os 3.4 M glibc-devel i686 2.12-1.212.el6_10.3 updates 991 k glibc-headers i686 2.12-1.212.el6_10.3 updates 628 k kernel-headers i686 2.6.32-754.23.1.el6 updates 4.6 M libgomp i686 4.4.7-23.el6 os 137 k mpfr i686 2.4.1-6.el6 os 153 k ppl i686 0.10.2-11.el6 os 1.3 M Updating for dependencies: glibc i686 2.12-1.212.el6_10.3 updates 4.4 M glibc-common i686 2.12-1.212.el6_10.3 updates 14 M libgcc i686 4.4.7-23.el6 os 115 k Transaction Summary ======================================================================================================================================================================== Install 9 Package(s) Upgrade 3 Package(s) Total download size: 38 M Is this ok [y/N]: y Downloading Packages: (1/12): cloog-ppl-0.15.7-1.2.el6.i686.rpm | 93 kB 00:00 (2/12): cpp-4.4.7-23.el6.i686.rpm | 3.4 MB 00:00 (3/12): gcc-4.4.7-23.el6.i686.rpm | 8.2 MB 00:00 (4/12): glibc-2.12-1.212.el6_10.3.i686.rpm | 4.4 MB 00:00 (5/12): glibc-common-2.12-1.212.el6_10.3.i686.rpm | 14 MB 00:00 (6/12): glibc-devel-2.12-1.212.el6_10.3.i686.rpm | 991 kB 00:00 (7/12): glibc-headers-2.12-1.212.el6_10.3.i686.rpm | 628 kB 00:00 (8/12): kernel-headers-2.6.32-754.23.1.el6.i686.rpm | 4.6 MB 00:00 (9/12): libgcc-4.4.7-23.el6.i686.rpm | 115 kB 00:00 (10/12): libgomp-4.4.7-23.el6.i686.rpm | 137 kB 00:00 (11/12): mpfr-2.4.1-6.el6.i686.rpm | 153 kB 00:00 (12/12): ppl-0.10.2-11.el6.i686.rpm | 1.3 MB 00:00 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Total 43 MB/s | 38 MB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : kernel-headers-2.6.32-754.23.1.el6.i686 1/15 Updating : libgcc-4.4.7-23.el6.i686 2/15 Updating : glibc-common-2.12-1.212.el6_10.3.i686 3/15 Updating : glibc-2.12-1.212.el6_10.3.i686 4/15 Installing : glibc-headers-2.12-1.212.el6_10.3.i686 5/15 Installing : glibc-devel-2.12-1.212.el6_10.3.i686 6/15 Installing : libgomp-4.4.7-23.el6.i686 7/15 Installing : mpfr-2.4.1-6.el6.i686 8/15 Installing : cpp-4.4.7-23.el6.i686 9/15 Installing : ppl-0.10.2-11.el6.i686 10/15 Installing : cloog-ppl-0.15.7-1.2.el6.i686 11/15 Installing : gcc-4.4.7-23.el6.i686 12/15 Cleanup : glibc-common-2.12-1.209.el6.i686 13/15 Cleanup : glibc-2.12-1.209.el6.i686 14/15 Cleanup : libgcc-4.4.7-18.el6.i686 15/15 Verifying : kernel-headers-2.6.32-754.23.1.el6.i686 1/15 Verifying : libgcc-4.4.7-23.el6.i686 2/15 Verifying : cpp-4.4.7-23.el6.i686 3/15 Verifying : libgomp-4.4.7-23.el6.i686 4/15 Verifying : glibc-devel-2.12-1.212.el6_10.3.i686 5/15 Verifying : glibc-2.12-1.212.el6_10.3.i686 6/15 Verifying : mpfr-2.4.1-6.el6.i686 7/15 Verifying : glibc-headers-2.12-1.212.el6_10.3.i686 8/15 Verifying : ppl-0.10.2-11.el6.i686 9/15 Verifying : glibc-common-2.12-1.212.el6_10.3.i686 10/15 Verifying : gcc-4.4.7-23.el6.i686 11/15 Verifying : cloog-ppl-0.15.7-1.2.el6.i686 12/15 Verifying : glibc-common-2.12-1.209.el6.i686 13/15 Verifying : libgcc-4.4.7-18.el6.i686 14/15 Verifying : glibc-2.12-1.209.el6.i686 15/15 Installed: gcc.i686 0:4.4.7-23.el6 Dependency Installed: cloog-ppl.i686 0:0.15.7-1.2.el6 cpp.i686 0:4.4.7-23.el6 glibc-devel.i686 0:2.12-1.212.el6_10.3 glibc-headers.i686 0:2.12-1.212.el6_10.3 kernel-headers.i686 0:2.6.32-754.23.1.el6 libgomp.i686 0:4.4.7-23.el6 mpfr.i686 0:2.4.1-6.el6 ppl.i686 0:0.10.2-11.el6 Dependency Updated: glibc.i686 0:2.12-1.212.el6_10.3 glibc-common.i686 0:2.12-1.212.el6_10.3 libgcc.i686 0:4.4.7-23.el6 Complete!
再次编译通过了,执行安装:
[root@centos Python-2.7.10]# make && make install
升级python,通过软链接,将python由指向2.6.6改为2.7.0
[root@centos bin]# ls python* -l -rwxr-xr-x 2 root root 6100 Aug 18 2016 python lrwxrwxrwx. 1 root root 6 Dec 13 2017 python2 -> python -rwxr-xr-x 2 root root 6100 Aug 18 2016 python2.6 [root@centos bin]# unlink python [root@centos bin]# unlink python2 [root@centos bin]# ls python* -l -rwxr-xr-x 1 root root 6100 Aug 18 2016 python2.6 [root@centos bin]# cp /usr/local/python27/bin/python2.7 /usr/bin/python2.7 [root@centos bin]# ls python* -l -rwxr-xr-x 1 root root 6100 Aug 18 2016 python2.6 -rwxr-xr-x 1 root root 7776 Nov 2 00:15 python2.7 [root@centos bin]# ln -s /usr/bin/python2.7 python [root@centos bin]# ln -s python python2 [root@centos bin]# ls python* -l lrwxrwxrwx 1 root root 18 Nov 2 00:16 python -> /usr/bin/python2.7 lrwxrwxrwx 1 root root 6 Nov 2 00:16 python2 -> python -rwxr-xr-x 1 root root 6100 Aug 18 2016 python2.6 -rwxr-xr-x 1 root root 7776 Nov 2 00:15 python2.7 [root@centos bin]# python -V python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
看版本又冒出来一个问题,找不到一个库文件,需编辑下配置文件/etc/ld.so.conf,指定一下库路径:
保存好后让它生效,现在ok了:
[root@centos bin]# ldconfig
[root@centos bin]# python -V
Python 2.7.10
现在搞第二个问题:yum的兼容,执行yum会提示导入python包出错:
[root@centos bin]# yum There was a problem importing one of the Python modules required to run yum. The error leading to this problem was: No module named yum Please install a package which provides this module, or verify that the module is installed correctly. It's possible that the above module doesn't match the current version of Python, which is: 2.7.10 (default, Nov 1 2019, 17:58:54) [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)] If you cannot solve this problem yourself, please go to the yum faq at: http://yum.baseurl.org/wiki/Faq
通过vi编辑/usr/bin/yum,把第一行最后加上2.6即可
再试试:
[root@centos bin]# yum Loaded plugins: fastestmirror, security You need to give some command Usage: yum [options] COMMAND List of Commands: check Check for problems in the rpmdb check-update Check for available package updates clean Remove cached data
打完收工。