一. 重装yum
1. 执行如下命令,卸载yum
命令程序
rpm -qa |grep yum |xargs rpm -e --nodeps
2. 依次执行如下命令,下载yum、yum-plugin-fastestmirror和yum-metadata-parser三个RPM安装包文件。
CentOS7:
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-163.el7.centos.noarch.rpm wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-52.el7.noarch.rpm
CentOS6:
wget https://mirrors.aliyun.com/centos/6/os/x86_64/Packages/yum-3.2.29-81.el6.centos.noarch.rpm wget https://mirrors.aliyun.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-16.el6.x86_64.rpm wget https://mirrors.aliyun.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.30-41.el6.noarch.rpm rpm -ivh yum*
3.执行如下命令,安装yum
命令程序。
要写在一行,否则报错
rpm -ivh yum-3.4.3-163.el7.centos.noarch.rpm yum-metadata-parser-1.1.4-10.el7.x86_64.rpm yum-plugin-fastestmirror-1.1.31-52.el7.noarch.rpm
二、更新yum源
将yum源改为国内的阿里云,并且安装EPEL拓展源
rm -rf /var/cache/yum/x86_64/7/epel/ rm -rf /etc/yum.repos.d/epel* wget -O/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum clean all && yum makecache
配置本地yum源;使用镜像自带的,也可以利用nginx搭建yum仓库
mount -o loop CentOS-7-x86_64-DVD-1511.iso /media/rhel7/ cp /media/rhel7/media.repo /etc/yum.repos.d/rhel7.repo echo "baseurl=file:///media/rhel7/" >> /etc/yum.repos.d/rhel7.repo yum update umount /media/rhel7/ rmdir /media/rhel7/ rm /etc/yum.repos.d/rhel7.repo
三、 yum命令常见用法
- 执行如下命令,通过关键字搜索软件包名。
yum search [$Keywords]
- 执行如下命令,安装指定软件。
yum -y install [$Package]
- 只下载包不安装
yum install [$Package] -y --downloadonly --downloaddir=/usr/local/src
- 执行如下命令,本地安装并解决RPM包的依赖关系。
yum -y localinstall [$Package]
- 执行如下命令,卸载
yum
命令安装的软件。
yum -y remove [$Package]
- 执行如下命令,列出所有已安装和仓库中,可用的软件包。
yum list
- 执行如下命令,列出指定软件包信息
yum info [$Package]
- 执行如下命令,列出所有可更新的软件包。
yum list updates
- 执行如下命令,更新所有或指定软件。
yum update yum update [$Package]
- 执行如下命令,在重新安装或者更新了Yum源后,清除缓存信息。
yum clean [$Parameter]
注:[$Parameter]为yum clean
命令参数,有packages
、headers
或all
。packages
为清除缓存中的RPM包文件,headers
为清除缓存中的RPM包头文件,all
为以上两个参数的集合,即清除所有。
四、使用yum命令如何保存RPM安装包
使用yum
命令保存RPM包。默认情况下,在Linux系统通过yum
命令安装软件后,会删除RPM包。只有修改yum
命令程序主配置文件,取消默认删除功能,才能保留相应的RPM包。默认的缓存主路径是/var/cache/yum/
,会根据系统版本和yum源的不同分别保存,可以根据现场需要自行修改。操作如下。
编辑/etc/yum.conf,修改参数keepcache
的值为1。1为保存,0为删除。
五、 yum命令常见报错处理案例
例一:yum命令解决因缺少so动态库不能正常安装软件问题
报错描述
因为缺少对应的so动态库文件,系统提示"error while loading shared libraries: XXXX.so.XXX: cannot open shared object file: No such file or directory"。
处理步骤
依次执行如下命令,查找出包含有so动态库文件的软件包,再使用yum
命令安装该软件包,进而补全so动态库的缺失。
yum whatprovides XXXX.so.XXX
yum -y install XXXX
注:XXXX.so.XXX为指定的so动态库文件,XXXX指包含有so动态库文件的软件包名字。
案例二:更新yum源报错
报错描述
更新YUM源时系统提示“repomd.xml: [Errno 14] HTTP Error 404: Not Found”。
处理步骤
- 使用工具update_source.sh更新YUM源。
- 由于update_source.sh工具不支持CentOS_5系统。参考如下链接,登录CentOS官网,更新YUM源。
- 更新后执行如下命令,重置加载YUM源。
yum clean all && yum makecache
案例三:使用yum命令提示GPG密钥签名
报错描述
使用yum
命令操作,没有更新或者没有导入GPG密钥签名,系统提示“GPG key retrieval failed : [Errno 12] Timeout on”。
处理步骤
- 执行如下命令,导入新的GPG密钥签名。
rpm --import http://mirrors.aliyuncs.com
/centos/RPM-GPG-KEY-CentOS-[$Number]注:[$Number]指系统版本号,根据现场需要进行修改列,如:5、6或者7。
- 执行如下命令,编辑
yum
命令repo配置文件,修改gpgcheckz字段的值等于0,关闭密钥认证功能。注:gpgcheck字段的值,等于0是关闭,等于1是开启。
vim /etc/yum.repos.d/epel.repo
案例四:使用yum命令系统提示“xz compression not available”
报错描述
使用yum
命令操作时,xz压缩不可用,系统提示 “xz compression not available”。
处理步骤
- 依次执行如下命令,更新EPEL源。
rm -rf /var/cache/yum/x86_64/7/epel/
rm -rf /etc/yum.repos.d/epel*
wget -O/etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo
http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all && yum makecache - 执行如下命令,安装XZ软件包。
yum -y install xz
案例五:使用yum命令系统提示“Transaction Check Error”
报错描述
使用yum
命令更新时,由于软件包版本冲突造成的错误。系统提示“Transaction Check Error”。报错详情中会告知发生冲突的软件包名称,这里以openssl软件包错误为例,报错详情“file /etc/pki/tls/certs/ca-bundle.crt from install of openssl-0.9.8e-36.el5_11.x86_64 conflicts with file from package”。
处理步骤
- 执行如下命令,略过错误提示软件包,直接更新Yum仓库中的其他软件包。
yum update --exclude=openssl*
- 执行如下命令,根据报错提示的软件包,查找出该软件包造成冲突的错误软件包。
rpm -q openssl --qf '%{NAME} %{VERSION} %{ARCH}'
提示:发生冲突的软件包为
- 执行如下命令,卸载无用的软件包。
rpm -e [$Package_Error]
注:[$Package_Error]指上一步获取的错误软件包名。
案例六:使用yum命令提示RPM数据库损坏
报错描述
使用yum
命令时,由于RPM数据库损坏,系统提示“Error: rpmdb open failed”。
处理步骤
- 执行如下命令,清除RPM数据库。
rm -rf /var/lib/rpm/__db.*
- 执行如下命令,重建RPM数据库。
rpm --rebuilddb
- 执行如下命令,重置RPM缓存使其生效。
yum clean all
案例七:使用yum命令系统提示不支持Python3.0以上版本
报错描述
使用yum
命令,报错不支持Python3.0以上版本,系统提示“Python-3.4.3: bad interpreter: Permission denied”。
处理步骤
- 执行如下命令,查看当前系统环境默认Python程序版本信息。
whereis python
- 执行如下命令,查看
yum
命令脚本解释器,调用的是python
命令程序。cat /usr/bin/yum
/usr/bin/python
。 - 执行如下命令,查看当前系统默认
python
命令的环境变量。ll /usr/bin/python*
python
命令默认调取的是Python3.0版本。 - 由于
yum
命令脚本调用目前只支持Python2.X版本,根据上一步获取的Python程序版信息,选择Python2.X版本。执行以下命令,编辑yum
命令执行脚本,修改/usr/bin/python
为当前系统环境中的Python2.X版本。注:
- “X”为子版本号,请根据现场环境更改,本文以
/usr/bin/python2.7
为例。 vim
命令使用方法,请参考vim教程。
vim /usr/bin/yum
- “X”为子版本号,请根据现场环境更改,本文以