首页 » Linux » 正文

CentOS 8 pip3安装包后firewalld防火墙启动失败

故障描述:在线上环境CentOS 8系统安装Seafile网盘系统过程中,执行以下命令安装依赖包
pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy psd-tools django-pylibmc django-simple-captcha 
安装过程中出现文件缺失错误信息,经过查询是由于pip3版本原因造成,故执行 pip3 install --upgrade pip 命令升级pip版本,然后再执行以上命令后,出现防火墙命令无法执行,提示错误信息如下
from decorator import decorator 
ModuleNotFoundError: No module named 'decorator'
初以为是firewalld包被破坏,故执行dnf reinstall firewalld命令重新安装firewalld防火墙,但是故障依旧
后查询安装seafile网盘系统的依赖文件的过程中的信息发现在安装最后执行了uninstall decorator包动作,故执行pip3 install decorator命令重新安装,执行后提示以下信息
pip is being invoked by an old script wrapper. This will fail in a future version of pip
故执行pip3 uninstall pip 命令后再执行dnf reinstall python3-pip重新安装pip命令,执行完毕后再次执行pip3 install decorator命令重新安装decorator包,此时执行成功,包成功安装
但是执行firewall-cmd命令依旧报同样的错误,此时考虑是否由于decorator包未完整安装导致,执行dnf list all|grep python3|grep decorator命令发现输出结果如下
python3-decorator.noarch                             4.2.1-2.el8                                       @BaseOS
经过信息比对发现最初执行pip3 install xxx命令安装seafile依赖库的时候卸载的版本正好是此版本,pip3 install decorator安装的版本高于此版本,故推测是由于decorator包安装不完整或者版本不匹配造成。因此执行以下命令重新安装decorator
dnf reinstall python3-decorator
执行完毕之后执行firewall-cmd命令提示防火墙未开启,执行systemctl start firewalld命令启动防火墙,再次执行firewall-cmd命令成功运行,故障到此解决
故障反思:此次故障原因有几点
1、在线上环境直接执行了包更新及安装命令,未经过线下环境进行测试
2、线上环境执行操作前未进行数据备份,现在的公有云系统提供快照功能,可实现创建快照再执行业务部署
3、在线上环境执行业务部署的时候只是按部就班的执行,在另外一台服务器执行成功的时候就直接在另外一台服务器执行了上述操作,未考虑环境的差异问题
4、线上环境执行业务部署的时候未仔细看所有的输出信息,造成了此次故障,幸而此次故障问题较小

发表评论