文档中心 > 云服务器 ECS

Linux 实例中 YUM 的常用方法和常见问题处理

更新时间: 访问次数:4116

免责声明:本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

 

概述

本文介绍了在Linux实例中,yum命令的配置及使用说明和常见问题处理。

 

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

本文以CentOS-7.4_64bit版本为例,描述了Linux系统中,yum命令程序的安装、简单用法以及报错处理。以下步骤如果涉及到删除、卸载或清除操作,请务必备份相关文件或创建快照后再执行。

 

安装yum命令程序

如果当前系统安装有yum命令程序,请先卸载后再安装。

  1. 执行如下命令,卸载yum命令程序。
    rpm -qa |grep yum |xargs rpm -e --nodeps
    系统显示类似如下。
  2. 依次执行如下命令,下载yum、yum-plugin-fastestmirror和yum-metadata-parser三个RPM安装包文件。
    提示:此处为一条命令可直接引用。
    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
    系统显示类似如下。
  3. 执行如下命令,安装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
    系统显示类似如下。
  4. 执行如下命令,测试yum命令程序安装成功。
    yum --help
    系统显示类似如下。

 

yum命令用法介绍

本文简单介绍了以下几种yum命令的使用说明。

  • 执行如下命令,通过关键字搜索软件包名。
    yum search [$Keywords]
    注:[$Keywords]为软件名称包含的部分字符,该关键字越接近软件包名称搜索准确度越高。
  • 执行如下命令,安装指定软件。
    yum -y install [$Package]
    注:[$Package]为软件包完整名称。
  • 执行如下命令,本地安装并解决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命令参数,有 packagesheadersallpackages为清除缓存中的RPM包文件, headers为清除缓存中的RPM包头文件, all为以上两个参数的集合,即清除所有。

 

使用yum命令如何保存RPM安装包

使用yum命令保存RPM包。默认情况下,在Linux系统的ECS实例中通过yum命令安装软件后,会删除RPM包。只有修改yum命令程序主配置文件,取消默认删除功能,才能保留相应的RPM包。默认的缓存主路径是/var/cache/yum/,会根据系统版本和yum源的不同分别保存,可以根据现场需要自行修改。操作如下。

  1. 执行如下命令,编辑yum命令程序配置文件。
    vim /etc/yum.conf
  2. 修改参数keepcache的值为1。
    注:keepcache的参数值为0时,表示关闭保存RPM包的功能;等于1时,表示开启保存RPM包的功能。
    系统显示类似如下,开启保存RPM包功能。
  3. 依次执行如下命令,测试配置成功。
    提示:此步骤为可选步骤,请根据现场环境自定,下载时要先确认当前系统中没有安装该程序。
    rpm -qa [$Package]
    yum -y install [$Package]
    find /var/cache/yum/ -name *.rpm
    系统显示类似如下。

 

yum命令常见报错处理案例

以下报错处理,皆是在Linux系统的ECS实例中操作,操作时请参考远程连接,登录到Linux系统的ECS实例。

 

案例一: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”。

 

处理步骤
  1. 使用工具update_source.sh更新YUM源。
  2. 由于update_source.sh工具不支持CentOS_5系统。参考如下链接,登录CentOS官网,更新YUM源。
  3. 更新后执行如下命令,重置加载YUM源。
    yum clean all && yum makecache

 

案例三:使用yum命令提示GPG密钥签名

报错描述

使用yum命令操作,没有更新或者没有导入GPG密钥签名,系统提示“GPG key retrieval failed : [Errno 12] Timeout on”。

 

处理步骤
  1. 执行如下命令,导入新的GPG密钥签名。
    rpm --import http://mirrors.aliyuncs.com\
    /centos/RPM-GPG-KEY-CentOS-[$Number]
    注:[$Number]指系统版本号,根据现场需要进行修改列,如:5、6或者7。
  2. 执行如下命令,编辑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”。

 

处理步骤
  1. 依次执行如下命令,更新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
  2. 执行如下命令,安装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”。

 

处理步骤
  1. 执行如下命令,略过错误提示软件包,直接更新Yum仓库中的其他软件包。
    yum update --exclude=openssl*
  2. 执行如下命令,根据报错提示的软件包,查找出该软件包造成冲突的错误软件包。
    rpm -q openssl --qf '%{NAME} %{VERSION} %{ARCH}'
    提示:发生冲突的软件包为
  3. 执行如下命令,卸载无用的软件包。
    rpm -e [$Package_Error]
    注:[$Package_Error]指上一步获取的错误软件包名。

 

案例六:使用yum命令提示RPM数据库损坏

报错描述

使用yum命令时,由于RPM数据库损坏,系统提示“Error: rpmdb open failed”。

 

处理步骤
  1. 执行如下命令,清除RPM数据库。
    rm -rf /var/lib/rpm/__db.*
  2. 执行如下命令,重建RPM数据库。
    rpm --rebuilddb
  3. 执行如下命令,重置RPM缓存使其生效。
    yum clean all

 

案例七:使用yum命令系统提示不支持Python3.0以上版本

报错描述

使用yum命令,报错不支持Python3.0以上版本,系统提示“Python-3.4.3: bad interpreter: Permission denied”。

 

处理步骤
  1. 执行如下命令,查看当前系统环境默认Python程序版本信息。
    whereis python
  2. 执行如下命令,查看yum命令脚本解释器,调用的是python命令程序。
    cat /usr/bin/yum
    系统显示类似如下,默认调用/usr/bin/python
  3. 执行如下命令,查看当前系统默认python命令的环境变量。
    ll /usr/bin/python*
    系统显示类似如下,确认当前python命令默认调取的是Python3.0版本。
  4. 由于yum命令脚本调用目前只支持Python2.X版本,根据上一步获取的Python程序版信息,选择Python2.X版本。执行以下命令,编辑yum命令执行脚本,修改/usr/bin/python为当前系统环境中的Python2.X版本。
    注:
    • “X”为子版本号,请根据现场环境更改,本文以/usr/bin/python2.7为例。
    • vim命令使用方法,请参考vim教程
    vim /usr/bin/yum
    系统显示类似如下。

 

适用于

  • 云服务器 ECS

FAQ

关于此文档暂时还没有FAQ
返回
顶部