## YUM 清单查询

### 介绍

yum（`Y`ellow dog `U`pdater, `M`odified）是一个在 `Fedora` 和 `RedHat` 以及 SUSE 中的 `Shell` 前端软件包管理器

    $ yum [options] [command] [package ...]

- YUM 官方网站 (yum.baseurl.org)
- Fedora 中的 Yum 文档 (fedoraproject.org)
- CentOS 中的 Yum 文档 (wiki.centos.org)
- Scientific Linux 中的 Yum 文档 (scientificlinux.org)

### YUM 查询

子命令描述和任务

#### help

显示 yum 命令和选项

    yum help

显示 yum 子命令和选项

### 单独的包

#### list

列出存储库中的包名称

    # 列出存储库中的包名称
    yum list available
    # 列出所有可用的包
    yum list installed
    # 列出所有已安装的包
    yum list all
    # 列出已安装和可用的软件包
    yum list kernel

#### info

列出已安装和可用的内核包

    # 列出有关 `vsftpd` 软件包的信息
    $ yum info vsftpd

#### deplist

显示包的依赖项

    $ yum deplist nfs-utils

列出依赖项和提供它们的包

#### provides

    # 查找提供查询文件的包
    $ yum provides “*bin/top”
    # 显示包含 README.top 文件的包
    $ yum provides “*/README.top”

#### search

    # 查找名称或描述中带有 samba 的软件包
    $ yum search samba

#### updateinfo

    # 获取有关可用软件包更新的信息
    $ yum updateinfo security

获取有关可用 security 更新的信息

### 包组

#### grouplist

列出已安装和可用软件包组的名称

#### groupinfo

    # 查看 Web 服务器组中的包
    $ yum groupinfo "Web Server"

#### check-update

查询存储库以获取可用的软件包更新

### 管理 YUM 存储库

#### repolist

显示启用的软件存储库

#### repoinfo

显示有关启用的 `yum` 存储库的信息 *

    $ yum repoinfo rhel-7-server-rpms

请参阅有关 rhel-7-server-rpms 存储库的信息

#### repo-pkgs

使用特定存储库中的包 *

    # 列出来自 my-rpms 存储库的软件包
    $ yum repo-pkgs my-rpms list
    # 从 my-rpms repo 安装所有软件包
    $ yum repo-pkgs my-rpms install
    # 从 my-rpms 存储库中删除所有软件包
    $ yum repo-pkgs my-rpms remove

#### makecache

下载 `yum` 存储库数据到缓存

### 故障排除和维护 YUM

#### check

检查本地 RPM 数据库是否有问题（运行了很长时间）

#### history

    # 列出所有 yum 安装、更新和清理操作
    $ yum history list
    # 显示 yum info 3 的详细信息
    $ yum history info 3
    # 撤消事务 3 中的 yum 操作
    $ yum history undo 3
    # 重做事务 3 中撤消的 yum 操作
    $ yum history redo 3

#### clean

    # 删除缓存中保存的包
    $ yum clean packages
    # 从缓存中清除所有包和元数据
    $ yum clean all

清除缓存的包数据

#### fssnapshot

列出 LVM 快照（帮助在包更新后回滚）

#### fs

    # 列出启用的文件系统过滤器
    $ yum fs filters
    # 过滤所有正在安装的文档（小心！）
    $ yum fs documentation

对文件系统采取行动（防止在最小系统上安装 doc 或语言文件）非常有用！

### 使用 YUM 管理语言包

#### langavailable

列出已安装的语言 *

#### langinfo

    # 列出与西班牙语相关的软件包
    $ yum langinfo es

#### langinstall

    # 安装与西班牙语相关的软件包
    $ yum langinstall es

#### langlist

列出已安装的语言 *

#### langremove

    # 删除与西班牙语相关的软件包
    $ yum langremove es

### 使用 YUM 安装、删除和升级软件包

#### install

    # 安装 vsftpd 包
    $ yum install vsftpd

#### update

    # 使用可用更新更新所有软件包
    $ yum update
    # 更新 httpd 包（如果可用）
    $ yum update httpd
    # 应用与安全相关的包更新
    $ yum update --security

#### update-to

将一个或所有软件包更新到特定版本

#### upgrade

    $ yum -y upgrade

更新包考虑过时，只升级所有包，不升级软件和系统内核

#### localinstall

    # 从本地文件、http 或 ftp 安装包
    $ yum localinstall abc-1-1.i686.rpm
    # 从本地目录安装 abc 包
    $ yum localinstall http://myrepo/abc-1-1.i686.rpm

从 FTP 站点安装 abc

#### downgrade

将软件包降级到早期版本

    $ yum downgrade abc

将 abc 包降级到早期版本

#### reinstall

    # 重新安装 util-linux（以替换任何已删除的文件）
    $ yum reinstall util-linux

#### swap

    # 删除 ftp 包并安装 lftp 包
    $ yum swap ftp lftp

#### erase/remove

    # 删除 vsftpd 包和依赖
    $ yum remove vsftpd

#### autoremove

    # 删除 httpd 和其他不需要的包
    $ yum autoremove httpd

#### groupinstall

    # 安装 Web 服务器包
    $ yum groupinstall "Web server"

### 更多 YUM 相关命令（安装 yum-utils 软件包）

#### find-repos-of-install

查找包来自哪个存储库

#### needs-restarting

查找已更新且需要重启的进程

#### repoclosure

从存储库中获取未满足的依赖项列表

#### repoquery

查询远程仓库和本地 `RPM` 数据库

    # 显示依赖包
    $ repoquery --requires --resolve bash

#### reposync

将 `yum` 存储库同步到本地目录

    # 从 repo 获取包
    $ reposync -r rhel-atomic-host-beta-rpms

#### repotrack

下载一个包及其所有依赖项

#### show-installed

列出已安装的 RPM 包和统计信息

#### verifytree

检查本地 yum 存储库的一致性

#### yum-complete-transaction

尝试完成未完成的 yum 交易

#### yumdb

检查或更改 yum 数据库

#### yumdownloader

    # 使用本地源离线安装 net-tools 工具包
    $ yumdownloader net-tools.x86_64
    # 使用 –destdir 参数设置下载的目标目录
    $ yumdownloader net-tools.x86_64 --destdir=/usr/local/bin/
    # 使用 –resolve 参数解决依赖关系并下载所需的安装包
    $ yumdownloader net-tools.x86_64 --resolve --destdir=/usr/local/bin/

从 repo 下载一个包到当前目录

### 不同 YUM 命令的常用选项

    yum --disableplugin=langpacks info vsftpd
    # 显示与正在运行的进程相关的包
    yum --enableplugin=ps ps
    yum install docker \
      --enablerepo=rhel-7-server-extras-rpm
    yum list available --disablerepo=epel
    # 下载 vsftpd 包到缓存
    yum install --downloadonly vsftpd

:- | -
--- | ---
`-y` | 如果出现提示，假设是
`--assumeno` | 如果提示，则假设否
`-q` | 不产生任何输出
`-v` | 产生额外的调试输出
`--noplugins` | 运行命令而不加载任何 yum 插件
`--disableplugin=` | 禁用单个命令的特定插件
`--enableplugin=` | 启用已安装但当前已禁用的插件
`--enablerepo=` | 为单个命令启用当前禁用的 repo（通配符可以）
`--disablerepo=` | 为单个命令禁用当前启用的 repo（通配符可以）
`--downloadonly` | 下载到 `/var/cache/yum/arch/prod/repo/packages/`，但不要安装
`--filter-???=` | 代替???与vendors, rpm-groups, arches 和其他人一起过滤输出
`--changelog` | 显示包的变更日志信息

## 另见

- YUM 官方网站 (yum.baseurl.org)
- YUM 备忘清单(适用于红帽 RedHad 企业 Linux) (access.redhat.com)
- 用 yum 管理软件包 (prefetch.net)
- Fedora 中的 Yum 文档 (fedoraproject.org)
- CentOS 中的 Yum 文档 (wiki.centos.org)
- Scientific Linux 中的 Yum 文档 (scientificlinux.org)