yum/rpm常用命令总结

Yum (Yellow dog Updater, Modified) ,Fedora、RedHat以及CentOS中的Shell前端软件包管理器,基于RPM。

yum常用命令

  • 显示可用的yum仓库

    1
    yum repolist
  • 指定某一个repo内搜索某个rpm包

    1
    yum --disablerepo=* --enablerepo=xxx search xxxx
  • 列出某个yum源中可用的rpm包

    1
    sudo yum --disablerepo="*" --enablerepo="xxxx" list available
  • 查找某条命令的yum源

    1
    yum whatprovides "*/whoami"
  • 查找某条命令由什么包提供

    1
    yum provides ${cmd}
  • 替换安装某个rpm包

    1
    2
    yum install yum-plugin-replace
    yum replace php-common --replace-with=php56-common
  • 降级安装

    1
    yum downgrade packages
  • 安装程序组

    1
    yum groupinstall 'Development Tools’
  • 从yum源中下载rpm包

    1
    2
    yum -y install yum-utils
    yumdownloader xxxx
  • yum下载依赖文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    方法一:
    yumdownloader 下载包名称 --resolve --destdir=/tmp/openresty

    参考:
    http://www.cnblogs.com/toSeek/p/6093679.html

    方法二:
    1.安装yum-plugin-downloadonly
    yum -y install ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/Virtualization:/Appliances/CentOS_CentOS-6/noarch/yum-plugin-downloadonly-1.1.31-2.2.noarch.rpm
    2.下载:
    yum install -y --downloadonly --downloaddir=/tmp/php php

    参考:
    http://graybull.is-programmer.com/posts/37702.html
    http://www.jianshu.com/p/5930545b5591
  • yum 查看so库文件所在的rpm包

    1
    yum whatprovides  libXpm.so.4
  • Yum 事务完整的历史记录

    1
    2
    3
    4
    5
    6
    7
    8
    yum history list all                # 查看历史yum命令
    yum history info nginx # 查看yum涉及指定软件包的事务详情
    yum history summary nginx # 查看yum涉及指定软件包的事务摘要
    yum history package-list nginx # 查看yum涉及指定软件包的历史记录
    yum history addon-info # 提供更多的信息来源
    yum history stats # 显示当前历史数据库的统计信息
    yum history sync # 更改为所有已安装软件包存储的rpmdb/yumdb数据
    yum history new # 创建新的历史文件

rpm常用命令

  • 强制降级

    1
    2
    3
    rpm -Uvh oldpackage.rpm --oldpackage 

    rpm -Uvh oldpackage.rpm --force
  • 查看rpm包安装前后执行的脚本

    1
    rpm -qp --scripts xxxx.rpm
  • rpm包安装前后执行脚本被传入参数$1的意义

    1
    2
    3
    0:卸载
    1:安装、升级卸载
    2:升级
  • 查看rpm包提供的命令

    1
    rpm -qp --provides xxxx.rpm
  • 查看rpm包注册的冲突信息

    1
    rpm -qp --conflicts xxxx.rpm
  • 查看rpm包注册的依赖信息

    1
    rpm -qpR xxxx.rpm
  • 查看rpm包中注册的配置文件

    1
    rpm -qpc xxxx.rpm
  • 查看rpm包的打包信息

    1
    rpm -qpi xxxx.rpm
  • 查看打包spec文件中的tag信息

    1
    2
    3
    4
    5
    rpm -q --qf %{tag} rpm_name

    tag list: Name|Version|Release|Summary|Group|License|URL
    eg:
    rpm -q --qf %{Version} rpm_name

内网yum源维护

  • 创建repodata

    1
    2
    yum -y install createrepo
    createrepo /path/to/RPMS/epel/7/x86_64/
  • 更新repodata

    1
    createrepo --update /path/to/RPMS/epel/7/x86_64
  • 镜像yum源

    1
    2
    3
    4
    5
    6
    7
    reposync -r "repoid"
    eg:
    reposync -r webtatic-archive -nu

    -r 指定镜像源
    -n 只下载最新镜像
    -u 只列出,不下载
  • 自定义yum源配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [epel.xxx]
    name=repo.xxx.xxx
    baseurl=http://repo.xxx/epel/$releasever/$basearch
    skip_if_unavailable=True # 在CentOS7系统上测试当前yum源如果不可用,会直接跳过,默认False,提示错误.
    gpgcheck=0
    enabled=1

    [epel-archive.xxx]
    name=archive.xxx.xxx
    baseurl=http://repo.xxx/archive/$releasever/$basearch
    gpgcheck=0
    enabled=0
  • 配置文件中$releasever变量是取redhat-release-server(redhat)或centos-release(centos) rpm包的属性 %{version} 的值。验证方法:

    1
    2
    3
    4
    $basearch:
    rpm -q --qf %{arch} redhat-release-server
    $releaseserver:
    rpm -q --qf %{version} redhat-release-server
  • rh和centos的$releasever稍有不同,一般rh的$releasever值是${Version}Server,centos的$releasever值直接是${Version}数值,所以在定义配置文件的时候要注意验证。

常见yum报错处理

  • yum报错:Rpmdb checksum is invalid: dCDPT(pkg checksums)
  • 解决方案
    1
    2
    rpm --rebuilddb
    yum clean all

备注