前言:node
近期漏洞修复频繁,各类组件须要升级,经屡次碰撞,发现 yum update 来升级组件是最有效最安全的方式(绿盟经过版本比对的扫描结果能够忽略)。python
然而,各家的设备各家管,一到升级就发现一堆问题了。呐这就发生了这么一个报错:安全
yum update yum -y #随便写一个,其实都同样python2.7
There was a problem importing one of the Python moduleside
required to run yum. The error leading to this problem was:工具
/usr/lib64/python2.7/site-packages/rpm/__rpm.so : underfined symbol rpmpkgverifySigsui
please install package which provides this module, or verify that module is installed correctly.this
It's possible that the above module doesn't match the current version of Python, which is:spa
2.7.5 (default , Jun 11 2019, 12:19:05)it
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
看到以上内容,相信你们都会:
1.急急忙忙地找 python 包
2. 查rpmpkgverifySigs 是什么
3.再不行就去升级gcc
然而告诉你们: 都错了!
正确的逻辑是:
1. rpmpkgverifySigs 这个变量是 __rpm.so 进行调用,可是脚本不认识,说明python版本错了
2. 按照红帽的习惯,像python这种多组件使用的脚本语言,红帽并不会给rpm这么重要的工具使用公用库,而是使用独有封装的库
3. 检查rpm有关的.rpm包,在里面搜索python: rpm -qa|grep rpm| grep python
4. 显示: rpm -python-4.11.3-32.el7.x86_64 答案呼之欲出,只要重装rpm-python
5. 你们都知道什么是依赖包,其实依赖包之间的关系还真是千丝万缕, 你以为只重装rpm-python就解决问题么?五十五吧,由于你不知道管理员装python后还弄了什么,因此保障点,一套包全升级了:
rpm -Uvh rpm-libs-xxxxxx.rpm --nodeps
rpm -Uvh rpm-xxxxxx.rpm --nodeps
rpm -Uvh rpm-build-xxxxxx.rpm --nodeps
rpm -Uvh rpm-python-xxxxxx.rpm --nodeps
rpm -Uvh rpm-sign-xxxxxx.rpm --nodeps
ps:
1. rpm 安装时有时2个包互相依赖,装哪一个先都会报错,此时只能 --nodeps 解决
2.rpm 请用 -U参数进行升级安装,否则会留着两个版本的同组件,你的下一手会很麻烦!