yum相关的错误
[TOC]
场景1:执行 yum install 报错 undefined symbol: CRYPTO_set_locking_callback
故障上报
- 2016.08.03.执行
yum list
报错如下:
/usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback
解决方案
- 1.执行
ldconfig -v | grep pycurl
查看动态库包含的libcurl,结果如下:
ldconfig: /etc/ld.so.conf.d/kernel-2.6.32-431.el6.x86_64.conf:6: duplicate hwcap 1 nosegneg
- 2.查看pycurl.so文件的链接关系
ldd /usr/lib64/python2.6/site-packages/pycurl.so
- 3.查看已载入的链接库文件中,是否包含这些库文件,发现这些库都已经载入。所以/etc/ld.so.conf 配置没有问题
ldconfig -v|grep -E 'linux-vdso.so.1|libcurl.so.4|libpython2.6.so.1.0|libpthread.so.0|libc.so.6'
ldconfig -v|grep -E 'librt.so.1|libz.so.1|libdl.so.2|libutil.so.1|libm.so.6'
- 4.使用strace来跟踪进程执行时的系统调用和所接收的信号,看卡在哪里,如果没有这个命令,需要安装一下,centos6.5 里面是strace-4.5.19-1.19.el6.x86_64.rpm 这个安装包
strace yum -o /tmp/out.file
注意:在报错位置的上方打开了/usr/lib64/libcurl.so.4,再往下开始报错了,所以排查一下/usr/lib64/libcurl.so.4
- 5.查看/usr/lib64/libcurl.so.4文件,发现它只是一个软连接文件,到libcurl.so.4.2.0
[root@localhost pycurl-7.19.0]# ll /usr/lib64/libcurl.so.4
lrwxrwxrwx 1 root root 27 Jan 11 00:05 /usr/lib64/libcurl.so.4 -> /usr/lib64/libcurl.so.4.2.0
- 6.进入这个目录看会不会有其他版本的
libcurl.so
,发现还有libcurl.so.4.1.1
,会不会是这个问题呢,安装报错提示看,应该和一个库文件版本有关系
[root@localhost pycurl-7.19.0]# ll /usr/lib64/libcurl.so*
lrwxrwxrwx. 1 root root 16 Nov 8 2015 /usr/lib64/libcurl.so -> libcurl.so.4.1.1
lrwxrwxrwx 1 root root 23 Jun 27 09:14 /usr/lib64/libcurl.so.3 -> /usr/lib64/libcurl.so.4
lrwxrwxrwx 1 root root 16 Sep 30 08:12 /usr/lib64/libcurl.so.4 -> libcurl.so.4.2.0
-rwxr-xr-x 1 root root 338K Jun 26 2013 /usr/lib64/libcurl.so.4.1.1
-rw-r--r-- 1 root root 331K Oct 31 2011 /usr/lib64/libcurl.so.4.2.0
- 7.尝试将链接文件,指向老版本
[root@cacti_billing lib64]# mv /usr/lib64/libcurl.so.4 /tmp/
[root@cacti_billing lib64]# ln -s /usr/lib64/libcurl.so.4.1.1 /usr/lib64/libcurl.so.4
- 8.改完之后故障解决
场景2:python升级导致yum命令无法使用
故障上报
- 系统默认的python为2.6,升级到2.7.9以后执行yum任何命令都会报错
解决方案
- 1.执行
python -V
确认当前版本为 2.7.9 - 2.执行
ll /usr/bin/python
确认python的软链:
/usr/bin/python -> /usr/local/python2.7/bin/python2.7
- 3.修改yum库中的python版本,把
/usr/bin/yum
第一行的#!/usr/bin/python
改为#!/usr/bin/python2.6
cat /usr/bin/yum
sed -i '1s/python$/python2.6/g' /usr/bin/yum
- 4.执行
yum --help
确认一下
场景3:执行 yum install 报错 This system is not registered with RHN
故障上报
- 2016.02.02.执行
yum install -y lrzsz
报错This system is not registered with RHN
[root@localhost]# yum install -y lrzsz
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Parsing package install arguments
No package lrzsz available.
Nothing to do
解决方案
cd /etc/yum.repos.d
wget http://docs.linuxtone.org/soft/lemp/CentOS-Base.repo
mv rhel-debuginfo.repo rhel-debuginfo.repo.bak
mv CentOS-Base.repo rhel-debuginfo.repo
场景4:执行 yum install 报错 No more mirrors to try
故障上报
- 2017.02.21.执行
yum install -y wget
报错如下:
Loaded plugins: fastestmirror
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; Unknown error"
Trying other mirror.
Error downloading packages:
wget-1.14-10.el7_0.1.x86_64: [Errno 256] No more mirrors to try.
解决方案
- 1.执行
cat /etc/resolv.conf
确认是否有配置dns服务器 - 2.若为阿里云ecs,建议更改yum源为阿里云yum源
- 3.若为华为云ecs,建议更改yum源为华为云yum源
场景5:执行 yum install 提示无可用包
故障上报
- 2017.03.24.执行
yum install -y libvdpau
提示无可用包
解决方案
- 先配置
vi /etc/yum.repos.d/linuxtech-testing.repo
[linuxtech-testing]
name=LinuxTECH Testing
baseurl=http://pkgrepo.linuxtech.net/el6/testing/
enabled=0
gpgcheck=1
gpgkey=http://pkgrepo.linuxtech.net/el6/release/RPM-GPG-KEY-LinuxTECH.NET
- 再执行
yum --enablerepo=linuxtech-testing install -y libvdpau
场景6:执行 yum 相关命令卡住无法退出
故障上报
- 2020.05.18.执行yum相关命令总是卡住,ctrl+c也退出不了
发生原因
- rpm的数据库出现异常了,所以会导致的执行命令时直接卡死;造成rpm的数据库异常,通常是因为之前不正常的安装或查询;
解决方案
- 删除rpm数据文件后再重建rpm数据文件,命令如下
ll /var/lib/rpm/__db.00*
rm -f /var/lib/rpm/__db.00*
rpm -vv --rebuilddb
yum clean all
yum makecache
场景7:yum安装报错 - 待完善
故障上报
- 最初是vi不能用
[root@wh-25126-baas]# alias vi='/bin/vi'
- 后来yum安装(比如安装cmake)报错
[root@wh-25126-baas]# ldconfig -v | grep libcurl
发生原因
- 查看
/etc/ld.so.conf
重复了
[root@wh-25126-baas]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
[root@wh-25126-baas]# ll /etc/ld.so.conf.d/*.conf
-r--r--r--. 1 root root 324 Sep 10 2014 /etc/ld.so.conf.d/kernel-2.6.32-431.29.2.el6.x86_64.conf
-r--r--r--. 1 root root 324 Nov 22 2013 /etc/ld.so.conf.d/kernel-2.6.32-431.el6.x86_64.conf
-rw-r--r--. 1 root root 17 Feb 13 2014 /etc/ld.so.conf.d/mysql-x86_64.conf
解决方案
- 删掉libcurl.so.4.2.0,再刷新下动态链接库
rm -f /usr/lib64/libcurl.so.4.2.0
ldconfig