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

  • A+
所属分类:Linux
高性能企业级服务器首台5折

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


YUM 常用命令

YUM 常用命令 描述与示例
1
yum --help
YUM 帮助命令,您可以运行该命令查看详细的 YUM 使用方法。
        YumHelp
1
yum install -y 待安装软件名
安装指定名称的软件。
        YumInstall
1
yum remove -y 待卸载软件名
卸载指定名称的软件。
        YumRemove
1
yum search 待安装软件
搜索指定名称软件的可用安装包。
示例:安装常用的 rz sz 软件,通过 

1
yum install rz

 或 

1
yum install rzsz

 等都无法找到,通过 

1
yum searh rz

 即可找到,可以看到 rz sz 软件属于 lrzsz 这个包。之后再通过 

1
yum install lrzsz

 安装。

        YumSearch
1
yum whatprovides
查找指定软件版本中提供 SO 动态库文件的安装包。
Linux 实例中安装应用时,有时会因为缺少对应的 SO 动态库文件而报错,比如出现如下报错内容:

1
error while loading shared libraries: XXXX.so.XXX: cannot open shared object file: No such file or directory


示例

  1. 运行 
    1
    yum whatprovides libstdc++.so.6

    查找指定软件版本提供 SO 动态库文件的安装包。

  2. 根据查找内容运行 
    1
    yum install -y XXXX

        YumWhatprovides
1
yum clean
清除 YUM 的缓存信息。示例:

  • 1
    yum clean packages

    :清除缓存中的 RPM 包文件。

  • 1
    yum clean headers

    :清除缓存中的 RPM 包头文件。

  • 1
    yum clean all

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

        YumClean

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

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

  1. 远程连接 并登录到 Linux 实例。
  2. 运行 
    1
    vim /etc/yum.conf

     修改 YUM 配置文件。

  3. 修改参数 
    1
    keepcache

     的值为 

    1
    1

    (其中 

    1
    0

     代表关闭、

    1
    1

     代表开启),保存并退出。KeepCache

  4. (可选)通过下载 vsftpd 为例测试:
    1. 运行 
      1
      yum -y install vsftpd

       下载 vsftpd。

    2. 运行 
      1
      cd /var/cache/yum/x86_64/7/base/packages

       切换文件目录。

    3. 运行 
      1
      ls

       查看文件列表,可以看到已保留 vsftpd 的 RPM 包。KeepCache

如何重装 YUM

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

  1. 远程连接 并登录到 Linux 实例。
  2. 运行 
    1
    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. 1
      <span class="pln">wget https</span><span class="pun">:</span><span class="com">//mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-154.el7.centos.noarch.rpm</span>
    2. 1
      <span class="pln">wget https</span><span class="pun">:</span><span class="com">//mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm</span>
    3. 1
      <span class="pln">wget https</span><span class="pun">:</span><span class="com">//mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-42.el7.noarch.rpm</span>
  4. 安装 yum、yum-plugin-fastestmirror 和 yum-metadata-parser。
    1. 1
      <span class="pln"><span class="hljs-meta">$</span><span class="bash"> rpm </span></span><span class="pun"><span class="bash">-</span></span><span class="pln"><span class="bash">ivh yum</span></span><span class="pun"><span class="bash">-</span></span><span class="lit"><span class="bash">3.4</span></span><span class="pun"><span class="bash">.</span></span><span class="lit"><span class="bash">3</span></span><span class="pun"><span class="bash">-</span></span><span class="lit"><span class="bash">154.el7.centos</span></span><span class="pun"><span class="bash">.</span></span><span class="pln"><span class="bash">noarch</span></span><span class="pun"><span class="bash">.</span></span><span class="pln"><span class="bash">rpm yum</span></span><span class="pun"><span class="bash">-</span></span><span class="pln"><span class="bash">metadata</span></span><span class="pun"><span class="bash">-</span></span><span class="pln"><span class="bash">parser</span></span><span class="pun"><span class="bash">-</span></span><span class="lit"><span class="bash">1.1</span></span><span class="pun"><span class="bash">.</span></span><span class="lit"><span class="bash">4</span></span><span class="pun"><span class="bash">-</span></span><span class="lit"><span class="bash">10.el7.x86</span></span><span class="pln"><span class="bash">_64</span></span><span class="pun"><span class="bash">.</span></span><span class="pln"><span class="bash">rpm yum</span></span><span class="pun"><span class="bash">-</span></span><span class="pln"><span class="bash">plugin</span></span><span class="pun"><span class="bash">-</span></span><span class="pln"><span class="bash">fastestmirror</span></span><span class="pun"><span class="bash">-</span></span><span class="lit"><span class="bash">1.1</span></span><span class="pun"><span class="bash">.</span></span><span class="lit"><span class="bash">31</span></span><span class="pun"><span class="bash">-</span></span><span class="lit"><span class="bash">42.el7.noarch</span></span><span class="pun"><span class="bash">.</span></span><span class="pln"><span class="bash">rpm</span></span>

YUM 常见报错处理方法

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

报错现象 分析与处理
YUM 出错 

1
Python-3.4.3: bad interpreter: Permission denied
分析:报错提示 YUM 不支持 python 3.0 以上版本。
解决

  1. 远程连接 并登录到 Linux 实例。
  2. 运行 
    1
    whereis pyhton

     查询当前服务器使用的 Python 版本。

  3. 运行 
    1
    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 源时报错 

1
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. 运行 
    1
    yum makecache

     更新元数据缓存。

        Errno14
YUM 操作提示 

1
GPG key retrieval failed : [Errno 12] Timeout on
解决
运行 

1
rpm --import http://mirrors.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-[7、6 或者 5]

YUM 操作时报错 

1
xz compression not available
分析:通常是由于安装了不兼容版本的 epel 引起的,您可以删除相应的 epel 包后重试即可。
解决

  1. 远程连接 并登录到 Linux 实例。
  2. 运行 
    1
    yum remove -y epel-release

     删除错误的 epel 包。

  3. 运行 
    1
    rm -rf /var/cache/yum/x86_64/6Server/epel/

    清理缓存。

  4. 重新执行报错前的 YUM 操作。
更新 YUM 时报错 

1
Transaction Check Error

,例如报错为

  1. 1
    <span class="pln"><span class="hljs-built_in">file</span> </span><span class="pun">/</span><span class="pln">etc</span><span class="pun">/</span><span class="pln">pki</span><span class="pun">/</span><span class="pln">tls</span><span class="pun">/</span><span class="pln">certs</span><span class="pun">/</span><span class="pln">ca</span><span class="pun">-</span><span class="pln">bundle</span><span class="pun">.</span><span class="pln">crt </span><span class="kwd"><span class="hljs-keyword">from</span></span><span class="pln"> install <span class="hljs-keyword">of</span> openssl</span><span class="pun"><span class="hljs-number">-</span></span><span class="lit"><span class="hljs-number">0.9</span></span><span class="pun"><span class="hljs-number">.</span></span><span class="lit"><span class="hljs-number">8e-36</span></span><span class="pun">.</span><span class="pln">el5_11</span><span class="pun">.</span><span class="pln">x86_64 conflicts </span><span class="kwd"><span class="hljs-keyword">with</span></span><span class="pln"> <span class="hljs-built_in">file</span> </span><span class="kwd"><span class="hljs-keyword">from</span></span> <span class="kwd">package</span>
分析:出现 

1
Transaction Check Error

 报错时,您需要根据报错信息定位原因,示例中是由于升级 OpenSSL 时出现异常。
解决

  1. 远程连接 并登录到 Linux 实例。
  2. 略过这个报错包的升级,直接升级其他的软件包。例如,运行 
    1
    yum update --exclude=openssl*

     略过 OpenSSL 包。

  3. 更新完成后,找出报错包的报错原因。例如,运行 
    1
    rpm -q openssl --qf '%{NAME} %{VERSION} %{ARCH}'

     找出冲突的软件为 

    1
    perl 5.8.8 x86_64 perl 5.8.8 i386

  4. 卸载冲突的软件包。例如,运行 
    1
    rpm -e perl.i386

     卸载 perl.i386。

YUM 操作报错 

1
Error: rpmdb open failed

。例如报错为:

  1. 1
    2
    3
    <span class="pln"><span class="hljs-keyword">error</span></span><span class="pun"><span class="hljs-keyword">:</span></span><span class="pln"> db3 error</span><span class="pun">(<span class="hljs-string">-</span></span><span class="lit"><span class="hljs-string">30974</span></span><span class="pun">)</span> <span class="kwd">from</span><span class="pln"> dbenv</span><span class="pun">-&gt;</span><span class="pln">failchk</span><span class="pun">:</span><span class="pln"> DB_RUNCOVERY</span><span class="pun">:</span> <span class="typ">Fatal</span><span class="pln"> error</span><span class="pun">,</span><span class="pln"> run database recovery</span>
    <span class="pln">error</span><span class="pun">:</span><span class="pln"> cannot open </span><span class="typ">Packages</span><span class="pln"> index </span><span class="kwd">using</span><span class="pln"> db3 </span><span class="pun">-</span>  <span class="pun">(<span class="hljs-string">-</span></span><span class="lit"><span class="hljs-string">30974</span></span><span class="pun">)</span>
    <span class="pln">error</span><span class="pun">:</span><span class="pln"> cannot open </span><span class="typ">Packages</span><span class="pln"> database </span><span class="kwd">in</span> <span class="pun">/</span><span class="kwd">var</span><span class="pun">/</span><span class="pln">lib</span><span class="pun">/</span><span class="pln">rpm</span>
分析:出现 

1
rpmdb open failed

 报错时,通常是由于 RPM 数据库被损坏所致。
解决

  1. 远程连接 并登录到 Linux 实例。
  2. 运行 
    1
    cd /var/lib/rpm/

     切换文件目录。

  3. 运行 
    1
    ls -l

     查看数据库文件。

  4. 运行 
    1
    rm -rf __db.*

     删除损坏的数据库。

  5. 运行 
    1
    rpm --rebuilddb

     重建数据库。

  6. 运行 
    1
    yum clean all

     清除缓存文件。

        RpmDb

 

发表评论

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