中秋节准备搭建docker + Nginx + uWsgi + Django的,误删了Centos的python2(平时用的是python3),然后就填了一下午的坑。记录下整个过程。
# 删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
# 下载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
--- (完)---
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后面的命令