记一次惨痛的教训—yum、rpm

原创
2018/03/19 23:54
阅读数 4.6K

因为系统配置硬件监控需要,在自己创建一个rpm包的时候系统没有rpmbuild工具,于是使用yum安装相关的包,但是安装过程中发现一些依赖包之间存在版本冲突,总是安装失败,于是手欠"rpm -e --nodeps -force libxml2-2.9.1-5.el7_1.2.i686"强制删除了该包,于是开始了一系列问题:
系统环境: centos7

开篇: yum挂了!!!

[root@test ~]# yum 
There was a problem importing one of the Python modules 
required to run yum. The error leading to this problem was: 
 
   libxml2.so.2: cannot open shared object file: No such file or directory 
 
Please install a package which provides this module, or 
verify that the module is installed correctly. 
 
It's possible that the above module doesn't match the 
current version of Python, which is: 
2.4.3 (#1, Nov 11 2010, 13:30:19)  
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] 
 
If you cannot solve this problem yourself, please go to  
the yum faq at: 
  http://wiki.linux.duke.edu/YumFaq 

此时,真是叫天天不应,叫地地不灵。百度、Google,经过一番查找总算有点眉目:http://blog.51cto.com/hellosa/503672 ,但是这仅仅只是开始。。。

中篇:我“爱”本地yum源

根据上面搜到的资料,查找对应的rpm包进行安装,本以为很快就可以解决问题,但是并没有,并不是方法不对,而是因为本地yum源惹的祸!!!最近刚刚重装的系统,在初始化系统环境时使用的是本地的yum源,但是发现有好多包因为版本冲突问题没能安装成功,然后才选择手动安装硬件监控工具:http://book.open-falcon.org/zh/usage/hwcheck.html (制作rpm包),再者就如上面所说,各种问题接踵而至。具体问题是:

[root@rd2 rpm]#  rpm -ivh bzip2-libs-1.0.6-13.el7.i686.rpm elfutils-libelf-0.168-8.el7.i686.rpm 
警告:bzip2-libs-1.0.6-13.el7.i686.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
错误:依赖检测失败:
	libattr.so.1 被 libacl-2.2.51-12.el7.i686 需要
	libattr.so.1(ATTR_1.0) 被 libacl-2.2.51-12.el7.i686 需要
	libattr.so.1 被 libcap-2.22-9.el7.i686 需要
... ...(省略部分报错)

各种rpm包之间各种依赖,还有“NOKEY”现象,真的是头都大了,yum不能用,只能手动下载对应的rpm包然后使用“rpm -ivh *.rpm --force(--force解决nokey问题)”来安装。在此展示一下我下载的rpm包(如果你的系统在部署的时候直接使用的网上的yum源,应该不至于这么惨烈):

bzip2-libs-1.0.6-13.el7.i686.rpm           nspr-4.13.1-1.0.el7_3.i686.rpm
elfutils-libelf-0.168-8.el7.i686.rpm       nss-3.28.4-8.el7.i686.rpm
file-libs-5.11-33.el7.i686.rpm             nss-pem-1.0.3-4.el7.i686.rpm
glibc-2.17-196.el7_4.2.i686.rpm            nss-softokn-3.28.3-6.el7.i686.rpm
glibc-2.17-196.el7.i686.rpm                nss-softokn-freebl-3.28.3-6.el7.i686.rpm
glibc-common-2.17-196.el7.x86_64.rpm       nss-util-3.28.4-3.el7.i686.rpm
libacl-2.2.51-12.el7.i686.rpm              pcre-8.32-17.el7.i686.rpm
libattr-2.4.46-12.el7.i686.rpm             popt-1.13-16.el7.i686.rpm
libcap-2.22-9.el7.i686.rpm                 readline-6.2-10.el7.i686.rpm
libdb-5.3.21-20.el7.i686.rpm               rpm-build-libs-4.11.3-25.el7.i686.rpm
libgcc-4.8.5-16.el7.i686.rpm               rpm-libs-4.11.3-25.el7.i686.rpm
libselinux-2.5-11.el7.i686.rpm             sqlite-3.7.17-8.el7.i686.rpm
libsepol-2.5-6.el7.i686.rpm                xz-libs-5.2.2-1.el7.i686.rpm
libstdc++-4.8.5-16.el7.i686.rpm            yum-3.4.3-154.el7.centos.noarch.rpm
libxml2-2.9.1-6.el7_2.3.i686.rpm           yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
libxml2-2.9.1-6.el7_2.3.x86_64.rpm         yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm
lua-5.1.4-15.el7.i686.rpm                  zlib-1.2.7-17.el7.i686.rpm
ncurses-libs-5.9-13.20130511.el7.i686.rpm

结局:完美!

待以上的包下载完成之后执行rpm -ivh命令终于不再提示依赖问题,但是仍有部分版本冲突问题存在,于是:

[root@rd2 rpm]# rpm -ivh bzip2-libs-1.0.6-13.el7.i686.rpm elfutils-libelf-0.168-8.el7.i686.rpm file-libs-5.11-33.el7.i686.rpm glibc-2.17-196.el7_4.2.i686.rpm glibc-2.17-196.el7.i686.rpm glibc-common-2.17-196.el7.x86_64.rpm libacl-2.2.51-12.el7.i686.rpm libattr-2.4.46-12.el7.i686.rpm libcap-2.22-9.el7.i686.rpm libdb-5.3.21-20.el7.i686.rpm libgcc-4.8.5-16.el7.i686.rpm libselinux-2.5-11.el7.i686.rpm libsepol-2.5-6.el7.i686.rpm libstdc++-4.8.5-16.el7.i686.rpm libxml2-2.9.1-6.el7_2.3.i686.rpm libxml2-2.9.1-6.el7_2.3.x86_64.rpm lua-5.1.4-15.el7.i686.rpm ncurses-libs-5.9-13.20130511.el7.i686.rpm nspr-4.13.1-1.0.el7_3.i686.rpm nss-3.28.4-8.el7.i686.rpm nss-pem-1.0.3-4.el7.i686.rpm nss-softokn-3.28.3-6.el7.i686.rpm nss-softokn-freebl-3.28.3-6.el7.i686.rpm nss-util-3.28.4-3.el7.i686.rpm pcre-8.32-17.el7.i686.rpm popt-1.13-16.el7.i686.rpm readline-6.2-10.el7.i686.rpm rpm-build-libs-4.11.3-25.el7.i686.rpm rpm-libs-4.11.3-25.el7.i686.rpm sqlite-3.7.17-8.el7.i686.rpm xz-libs-5.2.2-1.el7.i686.rpm yum-3.4.3-154.el7.centos.noarch.rpm yum-metadata-parser-1.1.4-10.el7.x86_64.rpm yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm zlib-1.2.7-17.el7.i686.rpm --force

执行完上面的命令后,赶紧试试yum,结果:

[root@rd2 rpm]# yum
已加载插件:fastestmirror, priorities, versionlock
您需要给出命令
Usage: yum [options] COMMAND

List of Commands:

check          检查 RPM 数据库问题
check-update   检查是否有可用的软件包更新
clean          删除缓存数据
deplist        列出软件包的依赖关系
... ...

修复完成!
一个个下载rpm包太累了,在此提供一个以上rpm的私人下载链接:https://pan.baidu.com/s/1vF8nnwlUc0PCBeXYxuRHVw 密码:pnjs

教训:

千万不要随意强制删系统基础库文件!!!
如果需要替换服务器上已安装的版本为旧版本的rpm包,可以使用如下方法:

# 下载对应rpm包到本地
# 强制安装
rpm -ivh 包名.rpm  --oldpackage --force

物理服务器温度监控

参考文档:
Git源码:https://github.com/51web/hwcheck
open-falcon:http://book.open-falcon.org/zh/usage/hwcheck.html
sensor:http://www.antrol.com/archives/202
补充:
根据以上参考资料3.1章节创建rpm包后需要使用“rpm -ivh”进行安装后方可使用“hwcheck”命令!

展开阅读全文
加载中

作者的其它热门文章

打赏
3
2 收藏
分享
打赏
0 评论
2 收藏
3
分享
返回顶部
顶部