CentOS 7系统中执行yum命令失败问题的排查方法

CentOS 7系统中执行yum命令失败问题的排查方法

贡献者:

KB小秘书

 · 

更新时间:2020-05-13 12:06:48

提示: 这是一篇由阿里云ACE开发者(Alibaba Cloud Engineer)贡献,针对特定用户问题发布的文章。文档的内容以原稿呈现,阿里云对于文档内容不做任何形式的承诺。阿里云有权在未经通知的情形下对文档内容做出任何形式的修改。

概述

本文主要讲述CentOS 7系统中执行yum命令失败问题的排查方法。

详细信息

阿里云提醒您:

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

请您参考以下场景进行操作。

执行yum命令报404错误

  1. 检查yum仓库是否配置正确,可以到CentOS 镜像下载阿里云repo配置文件。
  2. 如果报错中包含$releasever变量, 则执行rpm -qa | grep centos-release确认centos-release是否安装。未安装可以执行以下命令下载安装包进行安装。
    wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/centos-release-7-7.1908.0.el7.centos.x86_64.rpm
    rpm -ivh centos-release-7-7.1908.0.el7.centos.x86_64.rpm

执行yum install命令提示failed错误

从报错可以看到提示以下信息,此处以安装Telnet为例。

ERROR UNpacking rpm package 1:telnet-0.17-64.e17.x86_64
error:unpacking of archive failed on file /usr/bin/telnet;5e785bc7:cpio:open

请您执行lsattr命令检查/usr/bin目录权限,发现该目录有i属性,导致无法写入文件。执行以下命令解除目录的i属性即可。

chattr -i /usr/bin

执行yum命令提示Python解释器不存在

在执行yum命令时提示以下报错信息。

-bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory

说明:yum是一个python脚本。

  1. 执行以下命令查看yum路径。
    cat /usr/bin/yum
    系统会返回以下路径。
    #!/usr/bin/python
  2. 执行以下命令检查上述查看的路径。
    ls -al /usr/bin/python
    如果系统返回以下信息,Python可能被卸载、被改名或移动路径
    ls: cannot access /usr/bin/python: No such file or directory
    请您参考以下步骤进行排查。
    1. 执行以下命令查看安装包是否存在。
      rpm -qa | grep python
      系统返回以下信息。
      python-decorator-3.4.0-3.el7.noarch
      libselinux-python-2.5-14.1.el7.x86_64
      python-backports-1.0-8.el7.x86_64
      python-pyudev-0.15-9.el7.noarch
      rpm-python-4.11.3-35.el7.x86_64
      python-2.7.5-76.el7.x86_64
      .....
    2. 行以下命令查看Python相关文件。
      ls -al /usr/bin/python*
      系统返回以下信息。
      lrwxrwxrwx  1 root root   14 Feb 15  2019 /usr/bin/python-config -> python2-config
      lrwxrwxrwx. 1 root root    7 Feb 15  2019 /usr/bin/python.bak -> python2
      lrwxrwxrwx. 1 root root    9 Feb 15  2019 /usr/bin/python2 -> python2.7
      lrwxrwxrwx  1 root root   16 Feb 15  2019 /usr/bin/python2-config -> python2.7-config
      -rwxr-xr-x. 1 root root 7216 Oct 31  2018 /usr/bin/python2.7
      -rwxr-xr-x  1 root root 1835 Oct 31  2018 /usr/bin/python2.7-config
      请您根据返回的信息参考以下场景进行操作。
      • 检查/usr/bin/python.bak是否被改名,若发现被改名后手动改回即可恢复正常。
      • 如果未发现Python相关文件,即判定Python被卸载。
        1. 请您找个同系统的正常实例,执行如下命令。
          mkdir /python/
          yum install python --downloadonly --downloaddir=/python/
        2. 执行以下命令将/python/中的rpm包传到异常实例。
          scp /python/* root@x.x.x.x:/tmp/
          注意:x.x.x.x指的是需要访问的主机地址。前提是主机还有公网访问能力,能复制文件到主机中。
        3. 执行以下命令在异常实例上安装Python即可。
          cd /tmp
          rpm -ivh *

适用于

  • 云服务器ECS
  • 246

    发布KB

  • 655

    回答问题

  • 12

    粉丝数