前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次惨痛的教训—yum、rpm 原

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

作者头像
阿dai学长
发布2019-04-03 10:30:17
1.8K0
发布2019-04-03 10:30:17
举报
文章被收录于专栏:阿dai_linux阿dai_linux

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

开篇: yum挂了!!!

代码语言:javascript
复制
[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包),再者就如上面所说,各种问题接踵而至。具体问题是:

代码语言:javascript
复制
[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源,应该不至于这么惨烈):

代码语言:javascript
复制
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命令终于不再提示依赖问题,但是仍有部分版本冲突问题存在,于是:

代码语言:javascript
复制
[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,结果:

代码语言:javascript
复制
[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包,可以使用如下方法:

代码语言:javascript
复制
# 下载对应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”命令!

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018/03/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开篇: yum挂了!!!
  • 中篇:我“爱”本地yum源
  • 结局:完美!
  • 教训:
  • 物理服务器温度监控
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档