首页 > 系统相关 >Yum

Yum

时间:2022-10-15 20:11:57浏览次数:75  
标签:事务 yum 软件包 Yum 安装 history

参考文档

  1. Red Hat 7, system administrators guide: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/ch-yum

MAN 文档

  1. man yum.conf

简介

Yum 是 Red Hat 的软件包管理工具,它可以从仓库查询软件包元信息或下载它们,也可以安装、卸载这些软件包,并且,可以更新整个系统到最新可用版本。在更新、安装、卸载软件包时,Yum 可以自动进行依赖解析,所以可以自动安装所有可用的依赖包。
Yum 可以配置新的、额外的仓库或软件包源,并且提供了很多插件来增强和扩展它的功能。Yum 可以做很多 RPM 做的任务,并且,它们的命令行选项很多是类似的。Yum 可以使一台或一组机器上的软件包管理工作变得简单容易。
下面的章节假设你的系统在安装时已经注册了 Red Hat 订阅管理。如果你的系统还没有订阅,参考 Chapter 7, Registering the System and Managing Subscriptions
通过 Yum,你也可以轻松搭建你自己的 PRM 软件包仓库。可能的话,Yum 会使用并行下载多个软件包和其元信息来加速下载过程。
学习 Yum 是一项非常有价值的投资,因为它是最快的系统管理任务工具,并且它提供的功能远远多于可视化软件包管理工具。

重要提示

Yum 通过为所有软件包仓库/源(包括个人仓库)下的 GPG 签名的软件包启用 GPG(Gnu Privacy Guard;also known as GnuPG)签名校验来提供安全的软件包管理功能。签名校验启动时,yum 会拒绝安装 GPG 签名校验失败的软件包。也就是说,你可以相信你从受信任源(例如:Red Hat)安装的 PRM 软件包,可以确认它们在网络传输的过程中没有被修改。Yum 启用签名校验的详情可以参考:Section 9.5, “Configuring Yum and Yum Repositories”

注意

为了在你的系统上通过 Yum 练习安装、更新和卸载软件包,你必须有超级用户权限。本章所有的例子均假设你已经使用 su 或 sudo 命令获得了超级用户权限。

软件包仓库

查询软件包仓库列表

  1. 列举启用的软件包仓库:yum repolist
  2. 列举启用的软件包仓库的详细信息:yum repolist -v 或 yum repoinfo
  3. 列举禁用的软件包仓库:yum repolist disabled
  4. 列举全部(启用+禁用)的软件包仓库:yum repolist all
  5. 正则语法举例:yum repolist mysql-tools* -v,正则语法详情类似列举软件包

软件包

搜索软件包

  1. 根据 name 和 summary 匹配:yum search vim
  2. 根据所有元信息匹配:yum search all vim

查询软件包列表

  1. yum list 命令支持简单的正则语法:* 代表任意字符、?代表单个字符。为了防止 Shell 解释这些特殊字符,通常有两种方法:① 使用反斜线,例如:yum list vi*;② 使用双引号或单引号:yum list "vi*"
  2. yum list 或 yum list all 输出所有的已安装软件包和可安装软件包
  3. yum list installed 输出所有已安装软件包
  4. yum list available 输出所有可安装软件包
  5. 正则语法举例:yum list abrt-addon* abrt-plugin*
  6. 正则语法举例:yum list installed "krb?-*"
  7. 正则语法举例:yum list available gstreamer*plugin*

查询软件包元信息

  1. 查看软件包:yum info abrt,会列举出已安装和仓库中可安装的软件包,与 rpm -q --info abrt-server-info-page 类似,但 rpm -q 仅支持查看已安装的软件包,并且 yum info 支持查看软件包的仓库来源
  2. 正则语法举例:yum info abrt*
  3. 命令: yumdb info abrt-tui,支持查看软件包更多的元信息,其中 reason = user 表示用户主动安装,reason = dep 表示由于其他软件包依赖才安装的

查询软件包安装的文件

  1. 如果是本地 RPM 包文件,则使用命令:rpm -qlp [包的路径]
  2. 如果是 yum 安装的软件包,则使用 yum-utils 工具(安装:yum install -y yum-utils):repoquery -ql <package_name>

下载软件包

  1. 下载软件包:yum install wireshark.x86_64,不要选择 y 而是选择 d,即是只下载,不安装,下载后的 rpm 包位置:find /var/cache/yum/x86_64/ -type f -name wireshark*

安装软件包

  1. 安装软件包:yum install sqlite 或 yum install sqlite.i686
  2. 通过软件包提供的文件来安装软件包:yum install /usr/sbin/httpd,从这里可以看出 yum install 命令有一套复杂的分析逻辑来解析参数含义,这套逻辑是耗时的。要想加速安装过程,可以明确指名参数就是软件包名称:yum install -n name;或明确指名参数就是软件包名称加架构:yum installl -na name.architecture;或明确指名更详细的参数:yum install -nevra name-epoch:version-release.architecture;
  3. 同时,也支持:yum remove -n, yum remove -na, yum remove -nevra
  4. 如果不确定某个软件包提供的二进制文件位于 bin/ 文件夹还是 sbin/ 文件夹,可以使用命令:yum provides */httpd
  5. 正则语法举例:yum install audacious-plugins-*
  6. 安装本地软件包(比如之前使用了 yum install package_name 仅下载,未安装):yum localinstall path

卸载软件包

  1. 卸载软件包:yum remove wireshark,卸载命令不是 uninstall,有点奇怪呀!

查看有更新的软件包

  1. 查看有更新的软件包,使用命令:yum check-update

更新软件包

  1. 你可以选择更新单个或多个软件包,也可以一次更新所有软件包。如果你更新的软件包的依赖也有更新可用,则它们也会跟着更新。
  2. 要更新单个软件包,以 root 身份运行命令:yum update package_name
  3. 相似的,可以运行命令更新一个软件包组:yum group update group_name。关于软件包组的更新信息,可以参考:Section 9.3, “Working with Package Groups”
  4. Yum 也提供一个与 update 命令基本一样的命令 upgrade ,但 upgrade 会启用 obsoletes 配置(参考:Section 9.5.1, “Setting [main] Options”)。在配置文件 /etc/yum.conf 中,默认情况下,obsoletes 配置是启用的,这也就使得这两个命令功能一样。
  5. 更新所有软件包以及它们的依赖:yum update
  6. 仅执行安全相关的更新:yum update --security
  7. 执行最近的安全相关的更新:yum update-minimal --security。例如:the kernel-3.10.0-1 是目前系统上安装的软件包,kernel-3.10.0-2 是作为安全更新分发的软件包,kernel-3.10.0-3 是作为修复 bug 分发的软件包,那么yum update-minimal --security 更新到版本 kernel-3.10.0-2,yum update --security 更新到版本 kernel-3.10.0-3
  8. 可以使用 yum-cron 服务自动刷新软件包数据库和下载更新,关于 yum-cron 详情参考:Section 9.7, “Automatically Refreshing Package Database and Downloading Updates with Yum-cron”

离线更新软件包

离线条件下,使用 ISO 镜像文件,yum update 命令可以简单快速的更新软件包,步骤如下:

  1. 创建挂载目录:mkdir /media/mount_dir
  2. 挂在 ISO 镜像文件:mount -o loop iso_file_path /media/mount_dir
  3. 复制一份仓库配置:cp /media/mount_dir/media.repo /etc/yum.repos.d/new.repo
  4. 修改仓库配置文件,增加如下一行:baseurl=file:///media/mount_dir
  5. 更新软件包:yum update
  6. 取消挂载:umount /media/mount_dir
  7. 删除挂载目录:rmdir /media/mount_dir
  8. 删除仓库配置:rm /etc/yum.repos.d/new.repo

软件包组

查询

  1. 查询软件包组概览:yum groups summary
  2. 查询软件包组列表:yum group list glob_expression
  3. 查询软件包组列表,并且带有 group id:yum group list ids
  4. 查询软件包元信息:yum group info 'KDE Desktop'

安装

  1. 根据软件包组名安装:yum group install "group name"
  2. 根据软件包组 id 安装:yum group install groupid
  3. 安装 KDE Desktop 软件包组的四种方法,第一种:yum group install "KDE Desktop"
  4. 安装 KDE Desktop 软件包组的四种方法,第二种:yum group install kde-desktop
  5. 安装 KDE Desktop 软件包组的四种方法,第三种:yum install @"KDE Desktop"
  6. 安装 KDE Desktop 软件包组的四种方法,第四种:yum install @kde-desktop

卸载

  1. 卸载 KDE Desktop 软件包组的四种方法,第一种:yum group remove "KDE Desktop"
  2. 卸载 KDE Desktop 软件包组的四种方法,第二种:yum group remove kde-desktop
  3. 卸载 KDE Desktop 软件包组的四种方法,第三种:yum remove @"KDE Desktop"
  4. 卸载 KDE Desktop 软件包组的四种方法,第四种:yum remove @kde-desktop

事务历史

yum history 命令允许用户按时间线查看 yum 事务,事务发生时的日期和时间、受影响的包数目、事务是否成功和 RPM 数据库在事务之间是否有更改。另外,这个命令还可以用于 undo 或 redo 某个事务。所有的历史事务数据存储在 /var/lib/yum/history/ 文件夹中的 history 数据库中。

查询事务列表

  1. 查询事务状态概览:yum history stats,可以查看到事务 DB 文件
  2. 查询最近事务列表,可以使用命令:yum history 或 yum history list
  3. 查询所有事务列表,可以使用命令:yum history list all
  4. 查询某个 id 范围的事务,可以使用命令:yum history list 1..5
  5. 查询包含某个软件包更改的事务:可以使用命令:yum history list vim*
    Action(s) 字段取值:
Action Abbreviation Description
Downgrade D At least one package has been downgraded to an older version.
Erase E At least one package has been removed.
Install I At least one new package has beed install.
Obsoleting O At least one packge has been marked as obsolete.
Reinstall R At least one package has been reinstalled.
Update U At least one package has been updated to a newer version.

Altered 字段取值:

Symbol Description
< Before the transaction finished, the rpmdb database was changed outside yum.
> After the transaction finished, the rmpdb database was changed outside yum.
* The transaction failed to finish.
# The transaction finished successfully, but yum returned a non-zero exit code.
E The transaction finished successfully, but an error or a warning was displayed.
P The transaction finished successfully, but problems already existed in the rmpdb database.
s The transaction finished successfully, but the --skip-broken command-line option was used and certain packages were skipped.
  1. 查询事务记录概览:yum history summary
  2. 查询某个事务记录概览:yum history summary 51
  3. 查询某段 ID 范围内的事务记录概览:yum history summary 1..5
  4. 查询包含某个软件包更改的事务记录概览:yum history summary vim*
  5. 以软件包视角,查询事务列表:yum history package-list vim*

查询事务详情

  1. 查询某个事务详情:yum history info 51
  2. 查询最近一次事务详情:yum history info
  3. 查询某段事务详情:yum history info 30..32
  4. 查询某个事务附加信息:yum history addon-info 50
关键词 含义
config-main global yum options that were in use during the transaction. See Section 9.5.1, “Setting [main] Options” for information on how to change global options.
config-repos options for individual yum repositories. See Section 9.5.2, “Setting [repository] Options” for information on how to change options for individual repositories.
saved_tx the data that can be used by the yum load-transaction command in order to repeat the transaction on another machine (see below).
  1. 查询最近事务附加信息:yum history addon-info 或 yum history addon-info last

同步 rpmdb 和 yumdb

  1. 同步 rpmdb 和 yumdb:yum history sync

事务的 undo 和 redo

  1. yum history undo id
  2. yum history redo id
  3. 多台机器执行相同的事务:① 导出事务:yum -q history addon-info id saved_tx > file_name;② 导入事务:yum load-transaction file_name

启动新的事务历史

  1. 事务历史存储在 /var/libyum/history/ 文件夹中的一个 SQLite 数据库文件中;
  2. 启动新的事务历史:yum history new,该命令会创建一个全新的数据库文件来存储事务历史;

Yum 和 Yum 仓库配置

Yum 和 Yum 仓库的配置文件是 /etc/yum.conf,该文件包含一个 [main] 小节和多个 [repository] 小节,其中,[main] 小节设置的是全局配置,[repository] 中的配置可以覆盖 [main] 中的配置。但是,不建议在 /etc/yum.conf 上面配置 [repository] 配置,而是建议放在 /etc/yum.repos.d/ 目录下单独的文件中。

[main] 小节配置项

  1. assumeyes=0 表示:询问用户输入 yes/no
  2. assumeyes=1 表示:-y, --assumeyes answer yes for all questions
  3. cachedir=directory 配置存储缓存和数据库的文件
  4. debuglevel=0 表示禁用 debug 输出
  5. debuglevel=[1-10] debug 日志级别,值越大日志越详细

标签:事务,yum,软件包,Yum,安装,history
From: https://www.cnblogs.com/optor/p/16794934.html

相关文章

  • yum源问题
    yum源问题【错误问题】File"/usr/bin/yum",line30exceptKeyboardInterrupt,e:^^^^^^^^^^^^^^^^^^^^SyntaxError:multipleexceptiontypesmustbeparenthesized......
  • 解决liunx yum -y install wget安装失败
    在终端执行yum-yinstallwget时,终端提示:已加载插件:fastestmirrorLoadingmirrorspeedsfromcachedhostfiledocker-ce-stable......
  • 详解apt、yum、dnf 和 pkg
    介绍包管理系统除了安装软件外,它还提供了工具来更新已经安装的包。包存储库有助于确保你的系统中使用的代码是经过审查的,并且软件的安装版本已经得到了开发人员和包维护人......
  • Linux Centos系统使用yum时出现:Error:Cannot retrieve repository metadata (repomd.xm
    一、问题描述:在安装Oracle数据库时,需要用到yum安装所需要的软件包时,出现了:Error:Cannotretrieverepositorymetadata(repomd.xml)forreposi......
  • 配置本地yum源
    CentOS 本地yum配置[[email protected]]#catora.repo [oracle]name=Linux6.9DVDbaseurl=file:///mntgpgcheck=0enabled=1Redhat本地yum配置[root@Ora......
  • RedHat5.8更改yum源
    RedHat5.8更改yum源[root@localhost~]#ipvsadm-bash:ipvsadm:commandnotfound[root@localhost~]#yuminstallipvsadmLoadedplugins:katello,product-id,......
  • centos7出现yum之类的问题的时候可能是加入的一些源导致的问题最佳的解决方案就是-loo
    //傻逼的我胡搞出现不知道添加什么软件源到/etc/yum.repo中结果出现了一堆错-搜了很长时间没解决-算了-返璞归真(回到初始的状态)吧,看了一下别人的阿里云的服务器中初始的时候......
  • centos6 yum源
     1、备份系统旧配置文件mv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup2、下载源配置CentOS6wget-O/etc/yum.repos.d/CentOS-Bas......
  • 使用yum管理软件包
    概述:   yum(YellowdogUpdaterModified),(二进制包)已经编译、直接安装、无法修改、简单快捷,自动检查依赖性并一次安装所有依赖性的软件包,无需繁琐的一次次安装。使用yu......
  • 安装 LAMP 环境(yum 版本) shell脚本
    #!/bin/bash#安装LAMP环境(yum版本)#本脚本适用于RHEL7(RHEL6中数据库为mysql)yummakecache&>/dev/nullnum=$(yumrepolist|awk'/repolist/{print$2......