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

avatar 2018年5月2日20:53:58 评论 613

以下提供 YUM 常见的使用方法和问题处理方法,文档示范实例的系统为 CentOS 7.4 64 bit。在您执行任何有关 删除卸载或者 清除 的操作之前,请务必备份相关文件或者 创建快照 后方可执行。


YUM 常用命令

YUM 常用命令 描述与示例
yum --help YUM 帮助命令,您可以运行该命令查看详细的 YUM 使用方法。
        YumHelp
yum install -y 待安装软件名 安装指定名称的软件。
        YumInstall
yum remove -y 待卸载软件名 卸载指定名称的软件。
        YumRemove
yum search 待安装软件 搜索指定名称软件的可用安装包。
示例:安装常用的 rz sz 软件,通过 yum install rz 或 yum install rzsz 等都无法找到,通过 yum searh rz 即可找到,可以看到 rz sz 软件属于 lrzsz 这个包。之后再通过 yum install lrzsz 安装。
        YumSearch
yum whatprovides 查找指定软件版本中提供 SO 动态库文件的安装包。
在 Linux 实例中安装应用时,有时会因为缺少对应的 SO 动态库文件而报错,比如出现如下报错内容:error while loading shared libraries: XXXX.so.XXX: cannot open shared object file: No such file or directory
示例

  1. 运行 yum whatprovides libstdc++.so.6查找指定软件版本提供 SO 动态库文件的安装包。
  2. 根据查找内容运行 yum install -y XXXX
        YumWhatprovides
yum clean 清除 YUM 的缓存信息。示例:

  • yum clean packages:清除缓存中的 RPM 包文件。
  • yum clean headers:清除缓存中的 RPM 包头文件。
  • yum clean all:清除缓存中的 RPM 包和头文件(相当于同时执行上述两条命令)。
        YumClean

如何保存 YUM 安装软件时下载的 RPM 包

默认情况下,Linux 实例通过 YUM 安装软件后,会删除 RPM 包。您可以通过修改 YUM 的配置文件保留相应的 RPM 依赖包,以防不时之需。默认的缓存路径是 /var/cache/yum,会根据系统版本和 YUM 源的不同分别保存,您也可以根据实际需要自行修改。此处以 CentOS 7.4 64bit 实例为例。

  1. 远程连接 并登录到 Linux 实例。
  2. 运行 vim /etc/yum.conf 修改 YUM 配置文件。
  3. 修改参数 keepcache 的值为 1(其中 0 代表关闭、1 代表开启),保存并退出。KeepCache
  4. (可选)通过下载 vsftpd 为例测试:
    1. 运行 yum -y install vsftpd 下载 vsftpd。
    2. 运行 cd /var/cache/yum/x86_64/7/base/packages 切换文件目录。
    3. 运行 ls 查看文件列表,可以看到已保留 vsftpd 的 RPM 包。KeepCache

如何重装 YUM

以下提供重装 YUM 的方法,在您执行任何有关 删除 或者 卸载 的操作之前,务必在备份相关文件后方可执行。以 CentOS 7.4 实例为例,在阿里云开源镜像站 http://mirrors.aliyun.com/ 获取安装文件。

  1. 远程连接 并登录到 Linux 实例。
  2. 运行 rpm -qa |grep yum |xargs rpm -e --nodeps 卸载 YUM。
  3. 下载 yum、yum-plugin-fastestmirror 和 yum-metadata-parser 三个安装包文件,您可以访问 http://mirrors.aliyun.com/或者官网 http://yum.baseurl.org/ 下载。ReinstallYum
    1. wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-154.el7.centos.noarch.rpm
    2. wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm
    3. wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm
  4. 安装 yum、yum-plugin-fastestmirror 和 yum-metadata-parser。
    1. $ rpm -ivh 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

YUM 常见报错处理方法

以下提供 YUM 常见报错处理方法,在您执行任何有关 删除 或者 卸载 的操作之前,务必在备份相关文件后方可执行。

报错现象 分析与处理
YUM 出错 Python-3.4.3: bad interpreter: Permission denied 分析:报错提示 YUM 不支持 python 3.0 以上版本。
解决

  1. 远程连接 并登录到 Linux 实例。
  2. 运行 whereis pyhton 查询当前服务器使用的 Python 版本。
  3. 运行 more /usr/bin/yum 查看文件 /usr/bin/yum 第一行是否为是默认的 /usr/bin/python,其中 /usr/bin/python 安装的 Python 默认为 3.0 以下的版本。
  4. (可选)如果不是 /usr/bin/python ,修改为 /usr/bin/python 即可正常运行 YUM。
        BadInterpreter
更新 YUM 源时报错 repomd.xml: [Errno 14] HTTP Error 404: Not Found 解决

  1. 远程连接 并登录到 Linux 实例。
  2. 更新 YUM 源。您可以使用工具 update_source.sh 更新 YUM 源,需要注意的是,update_source.sh 工具不支持 CentOS 5 服务器,CentOS 5 服务器可以前往官网 http://vault.centos.org/ 更新 YUM 源。
  3. 运行 yum makecache 更新元数据缓存。
        Errno14
YUM 操作提示 GPG key retrieval failed : [Errno 12] Timeout on 解决
运行 rpm --import http://mirrors.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-[7、6 或者 5]
YUM 操作时报错 xz compression not available 分析:通常是由于安装了不兼容版本的 epel 引起的,您可以删除相应的 epel 包后重试即可。
解决

  1. 远程连接 并登录到 Linux 实例。
  2. 运行 yum remove -y epel-release 删除错误的 epel 包。
  3. 运行 rm -rf /var/cache/yum/x86_64/6Server/epel/清理缓存。
  4. 重新执行报错前的 YUM 操作。
更新 YUM 时报错 Transaction Check Error,例如报错为

  1. 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
分析:出现 Transaction Check Error 报错时,您需要根据报错信息定位原因,示例中是由于升级 OpenSSL 时出现异常。
解决

  1. 远程连接 并登录到 Linux 实例。
  2. 略过这个报错包的升级,直接升级其他的软件包。例如,运行 yum update --exclude=openssl* 略过 OpenSSL 包。
  3. 更新完成后,找出报错包的报错原因。例如,运行 rpm -q openssl --qf '%{NAME} %{VERSION} %{ARCH}' 找出冲突的软件为 perl 5.8.8 x86_64 perl 5.8.8 i386
  4. 卸载冲突的软件包。例如,运行 rpm -e perl.i386 卸载 perl.i386。
YUM 操作报错 Error: rpmdb open failed。例如报错为:

  1. error: db3 error(-30974) from dbenv->failchk: DB_RUNCOVERY: Fatal error, run database recovery
    error: cannot open Packages index using db3 - (-30974)
    error: cannot open Packages database in /var/lib/rpm
分析:出现 rpmdb open failed 报错时,通常是由于 RPM 数据库被损坏所致。
解决

  1. 远程连接 并登录到 Linux 实例。
  2. 运行 cd /var/lib/rpm/ 切换文件目录。
  3. 运行 ls -l 查看数据库文件。
  4. 运行 rm -rf __db.* 删除损坏的数据库。
  5. 运行 rpm --rebuilddb 重建数据库。
  6. 运行 yum clean all 清除缓存文件。
        RpmDb

 

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: