免责声明:本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
本文介绍了在Linux实例中,yum
命令的配置及使用说明和常见问题处理。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
本文以CentOS-7.4_64bit版本为例,描述了Linux系统中,yum
命令程序的安装、简单用法以及报错处理。以下步骤如果涉及到删除、卸载或清除操作,请务必备份相关文件或创建快照后再执行。
如果当前系统安装有yum
命令程序,请先卸载后再安装。
yum
命令程序。 rpm -qa |grep yum |xargs rpm -e --nodeps系统显示类似如下。
提示:此处为一条命令可直接引用。
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-161.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-50.el7.noarch.rpm
yum
命令程序。 rpm -ivh yum-3.4.3-161.el7.centos.noarch.rpm \系统显示类似如下。
yum-metadata-parser-1.1.4-10.el7.x86_64.rpm \
yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm
yum
命令程序安装成功。 yum --help系统显示类似如下。
本文简单介绍了以下几种yum
命令的使用说明。
yum search [$Keywords]
注:[$Keywords]为软件名称包含的部分字符,该关键字越接近软件包名称搜索准确度越高。
yum -y install [$Package]
注:[$Package]为软件包完整名称。
yum -y localinstall [$Package]
yum
命令安装的软件。 yum -y remove [$Package]
yum list
yum info [$Package]
yum list updates
yum update
yum update [$Package]
yum clean [$Parameter]
注:[$Parameter]为yum clean
命令参数,有packages
、headers
或all
。packages
为清除缓存中的RPM包文件,headers
为清除缓存中的RPM包头文件,all
为以上两个参数的集合,即清除所有。
使用yum
命令保存RPM包。默认情况下,在Linux系统的ECS实例中通过yum
命令安装软件后,会删除RPM包。只有修改yum
命令程序主配置文件,取消默认删除功能,才能保留相应的RPM包。默认的缓存主路径是/var/cache/yum/
,会根据系统版本和yum源的不同分别保存,可以根据现场需要自行修改。操作如下。
yum
命令程序配置文件。 vim /etc/yum.conf
keepcache
的值为1。
注:keepcache的参数值为0时,表示关闭保存RPM包的功能;等于1时,表示开启保存RPM包的功能。系统显示类似如下,开启保存RPM包功能。
提示:此步骤为可选步骤,请根据现场环境自定,下载时要先确认当前系统中没有安装该程序。
rpm -qa [$Package]系统显示类似如下。
yum -y install [$Package]
find /var/cache/yum/ -name *.rpm
以下报错处理,皆是在Linux系统的ECS实例中操作,操作时请参考远程连接,登录到Linux系统的ECS实例。
因为缺少对应的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源时系统提示“repomd.xml: [Errno 14] HTTP Error 404: Not Found”。
yum clean all && yum makecache
使用yum
命令操作,没有更新或者没有导入GPG密钥签名,系统提示“GPG key retrieval failed : [Errno 12] Timeout on”。
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压缩不可用,系统提示 “xz compression not available”。
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 -y install xz
使用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 update --exclude=openssl*
rpm -q openssl --qf '%{NAME} %{VERSION} %{ARCH}'
提示:发生冲突的软件包为
rpm -e [$Package_Error]
注:[$Package_Error]指上一步获取的错误软件包名。
使用yum
命令时,由于RPM数据库损坏,系统提示“Error: rpmdb open failed”。
rm -rf /var/lib/rpm/__db.*
rpm --rebuilddb
yum clean all
使用yum
命令,报错不支持Python3.0以上版本,系统提示“Python-3.4.3: bad interpreter: Permission denied”。
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系统显示类似如下。