前言: 近期漏洞修複頻繁,各種組件需要升級,經多次碰撞,發現 yum update 來升級組件是最有效最安全的方式(綠盟通過版本比對的掃描結果可以忽略)。 然而,各家的設備各家管,一到升級就發現一堆問題了。吶這就發生了這麼一個報錯: yum update yum -y #隨便寫一個,其實都一樣 Th ...
前言:
近期漏洞修複頻繁,各種組件需要升級,經多次碰撞,發現 yum update 來升級組件是最有效最安全的方式(綠盟通過版本比對的掃描結果可以忽略)。
然而,各家的設備各家管,一到升級就發現一堆問題了。吶這就發生了這麼一個報錯:
yum update yum -y #隨便寫一個,其實都一樣
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:
/usr/lib64/python2.7/site-packages/rpm/__rpm.so : underfined symbol rpmpkgverifySigs
please install package which provides this module, or verify that module is installed correctly.
It's possible that the above module doesn't match the current version of Python, which is:
2.7.5 (default , Jun 11 2019, 12:19:05)
[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參數進行升級安裝,不然會留著兩個版本的同組件,你的下一手會很麻煩!