centos删除python遇到的问题

中秋节准备搭建docker + Nginx + uWsgi + Django的,误删了Centos的python2(平时用的是python3),然后就填了一下午的坑。记录下整个过程。

删除python2

# 删python2
rpm -qa|grep python|xargs rpm -e --allmatches --nodeps
whereis python|xargs rm -fr

坑1:
删除python2后,yum命令依赖python2,yum不能用了

坑2:
装python3时,提示缺少zlib命令

File "/opt/Python-3.6.4/Lib/ensurepip/__init__.py", line 27, in _run_pip

import pip

zipimport.ZipImportError: can't decompress data; zlib not available   ###缺少可用的zlib命令

make: *** [install] Error 1   

结论

python2 不能删除,装载python3,改python命令的软连接即可。

解决办法(填坑)

#查看centos的版本信息
cat /etc/redhat-release
# CentOS Linux release 7.5.1804 (Core) 

###  删除python2,下载rpm包    ###
wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/python-2.7.5-68.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/python-iniparse-0.4-9.el7.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/python-pycurl-7.19.0-19.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/python-devel-2.7.5-68.el7.x86_64.rpm
wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/python-libs-2.7.5-68.el7.x86_64.rpm 
wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/python-urlgrabber-3.10-8.el7.noarch.rpm
wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/rpm-python-4.11.3-32.el7.x86_64.rpm 
wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
###  删除yum,下载rpm包    ###
# wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/yum-3.4.3-158.el7.centos.noarch.rpm
# wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/yum-utils-1.1.31-45.el7.noarch.rpm
# wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/yum-langpacks-0.4.2-7.el7.noarch.rpm
# wget http://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-45.el7.noarch.rpm

# rpm命令装载
rpm -ivh  ./*.rpm --nodeps --force

装载python3

# 下载Python-3.6.3.tgz
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz

# 解压
tar -xvf Python-3.6.3.tgz

# 编译,安装
# --prefix选项是配置安装的路径
#  如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。
 ./configure --prefix=/usr/local/python3
make
make install

# 删除python的软连接
rm -f /usr/bin/python

# python3的软连接
ln -s /usr/local/python3/Python-3.6.3/python /usr/bin/python

# 查看python命令对应的版本
python -V  

# yum用的是python2
vi /usr/bin/yum
#! /usr/bin/python  # python改成python2
                                             --- (完)---

附录 — linux命令

rpm 命令
-a  查询所有套件。
-q  使用询问模式,当遇到任何问题时,rpm指令会先询问用户。
-i  显示套件的相关信息。
-i<套件档>或–install<套件档>  安装指定的套件档。
-v  显示指令执行过程。
-h或–hash  套件安装时列出标记。


xargs 命令
rpm -qa|grep python|xargs rpm -e --allmatches --nodeps
whereis python|xargs rm -fr

xargs 把 rpm -qa|grep python返回的字符串,转换成rpm -e --allmatches --nodeps的参数

rpm -q <关键字> 可以查询到rpm包的名字
rpm -e <包的名字> 删除特定rpm包
如果遇到依赖,无法删除,使用 rpm -e --nodeps <包的名字> 不检查依赖,直接删除rpm包
如果恰好有多个包叫同样的名字,使用 rpm -e --allmatches --nodeps <包的名字> 删除所有相同名字的包, 并忽略依赖

栗子1::echo ‘test.c test.cpp’ | xargs cat 等价于 cat test.c test.cpp ,把test.c和test.cpp的内容都显示出来。

栗子2:echo ‘11 22 33’ | xargs -E ‘33’ echo # 输出 11 22
该选项指定一个字符串,当xargs解析出多个命令行参数的时候,如果搜索到-e指定的命令行参数,则只会将-e指定的命令行参数之前的参数(不包括-e指定的这个参数)传递给xargs后面的命令

你可能感兴趣的:(python)