yum 简单介绍

比特逐影人
• 阅读 4208

yum(全称为 Yellow dog Updater, Modified)是一个在 FedoraRedHat 以及 CentOS 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装

yum 主要是更方便的添加、删除、更新RPM包,自动解决软件包之间的依赖关系方便系统更新软件管理yum 通过软件仓库(repository)进行软件的下载、安装等,软件仓库可以是一个 HTTP 或 FTP 站点,也可以是一个本软件池,资源仓库也可以是多个,在 /etc/yum.conf 文件中进行相关配置即可。在yum的资源库中,会包括 RPM 的头信息(header),头信息中包括了软件的功能描述、依赖关系等。通过分析这些信息,yum 计算出依赖关系并进行相关的升级、安装、删除等操作

yum 命令

命令格式:

yum [options] COMMAND

常用选项(options)列表:

-h, --help         #显示帮助信息
-t, --tolerant     #容错
-C, --cacheonly    #完全从系统缓存中运行,不更新缓存
-c [config file], --config=[config file]      #本地配置文件
-R [minutes], --randomwait=[minutes]          #命令最大等待时间
-d [debug level], --debuglevel=[debug level]  #设置调试级别
-e [error level], --errorlevel=[error level]  #设置错误等级
-q, --quiet        #退出运行
-v, --verbose      #详细模式
-y, --assumeyes    #对所有交互提问都回答 yes

命令(COMMAND)列表:

check         #检测 rpmdb 是否有问题
check-update  #检查可更新的包
clean         #清除缓存的数据
deplist       #显示包的依赖关系
distribution-synchronization  #将已安装的包同步到最新的可用版本
downgrade     #降级一个包
erase         #删除包
groupinfo     #显示包组的详细信息
groupinstall  #安装指定的包组
grouplist     #显示可用包组信息
groupremove   #从系统删除已安装的包组
help          #删除帮助信息
history       #显示或使用交互历史
info          #显示包或包组的详细信息
install       #安装包
list          #显示可安装或可更新的包
makecache     #生成元数据缓存
provides      #搜索特定包文件名
reinstall     #重新安装包
repolist      #显示已配置的资源库
resolvedep    #指事实上依赖
search        #搜索包
shell         #进入yum的shell提示符
update        #更新系统中的包
upgrade       #升级系统中的包
version       #显示机器可用源的版本

:以上可用命令和选项由于 yum 版本的不同可能会有所有不同

yum 使用示例

1、安装方式:

  • 单独安装

  • 包组安装

# 安装软件包 foo
yum install foo
# 安装 Web server 软件包组
yum groupinsall "Web server"

groupinsall 是一种快捷安装方式,他会将包组中所需的软件包一次性全部安装。如,上例中的 "Web server" 包组可能会包含: httpd、 crypto-utils 等软件包

2、更新、升级
对于已安装的程序,可以进行升级操作,有以下几种升级方式:

# 检查可用更新
yum check-update 
# 全部更机关报
yum update
# 更新 foo 软件包
yum update foo
# 或
yum upgrade foo
# 升级 Web server 软件包组
yum groupupdate "Web server"

更新安装包时,可以使用update或upgrade,二者区别如下:

  • yum update 是更新下载源里面的 metadata,包括这个源有什么包、每个包什么版本之类的

  • yum upgrade 会根据update后的元信息对软件包进行升级

3、删除
删除时,可以删除单个软件包或软件包组:

# 删除软件 foo
yum remove foo
# 删除 Web server 软件包组
yum groupremove "Web server"

4、查找
通过 search 命令可以查找软件包,而 info 命令可以用来显示软件包信息

# 查找名称包含 foo 的软件包
yum search foo
# 显示名为 foo 的软件包信息
yum info foo
# 显示软件包 foo 的依赖关系
yum deplist foo
# 显示软件包组 Web server 的信息
yum groupinfo "Web server"
# 显示已安装的软件包 
yum list installed

yum 的配置

yum 的配置文件分为mainrepository

  1. main:定义了全局配置选项,该文件只有一个。通常位于 /etc/yum.conf

  2. repository:定义了源服务器的具体配置,可能是一或多个。通常位于 /etc/yum.repo.d 目录

可以通过以下命令查看yum的配置:

cat /etc/yum.conf

主要配置项如下:

[main]
# yum 的缓存目录,用于存储下载的 RPM 包和数据库
cachedir=/var/cache/yum/$basearch/$releasever

# 安装完成后是否保留软件包,0为不保留(默认为0),1为保留
keepcache=0
   
# Debug 信息输出等级,范围为0-10,默认为2
debuglevel=2

# yum 日志文件位置,用户通过该文件查询做过的更新   
logfile=/var/log/yum.log
   
# 是否只安装和系统架构匹配的软件包。可选项为:1、0,默认为1
# 设置为 1 时不会将 i686 的软件包安装在适合i386的系统中
exactarch=1

# update 设置,是否允许更新陈旧的 RPM 包,相当于 upgrade
obsoletes=1
   
# 是否进行 GPG(GNU Private Guard) 校验,以确定 RPM 包的来源是有效和安全
# 当在这个选项设置在[main]部分,则对每个 repository 都有效
plugins=1

# 是否启用插件,默认1为允许,0表示不允许
gpgcheck=1
   
# 排除某些软件在升级名单之外,可以用通配符,各个项目用空格隔开
exclude=*.i?86 kernel kernel-xen kernel-debug

# 可同时安装多少程序包   
installonly_limit=5

# Bug 追踪路径   
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum

# 当前发行版版本号   
distroverpkg=centos-release

相关链接
CentOS更改yum源与更新系统

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
虾米大王 虾米大王
3年前
java代码092
code092.jsp通过FindServlet类查询分页数据所有图书信息ID图书名称价格数量作者<%Listlist1(List)request.getAttribute("list");for(code089book:list1)%
虾米大王 虾米大王
3年前
java代码099
code099.jspInserttitlehere$pageScope.user.name
虾米大王 虾米大王
3年前
java代码073
code073.javapackagepack02;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.UUID;importjavax.servlet.ServletException;importjavax.servlet.annotation.Multip
Wesley13 Wesley13
3年前
VSCode配置FiraCode和更纱黑体字体
!(https://oscimg.oschina.net/oscnet/c7bb62d935ceb01d3b7fe176322e84ae00d.png)Fira Code下载到FiraCode字体的GitHub(https://www.oschina.net/action/GoToLink?urlhttps%
Stella981 Stella981
3年前
Python code question 11
Question11Level2Question:Writeaprogramwhichacceptsasequenceofcommaseparated4digitbinarynumbersasitsinputandthencheckwhethertheyaredivisibleby5o
Stella981 Stella981
3年前
Linux自动检测网站心跳通知shell脚本
!/bin/bashLIST("http://xxxx.com")NAME("评价系统getwindowList接口")for((i0;i<${LIST@};i))doHTTP_CODEcurlo/dev/nullsw"%{http_code}""${LIST
Wesley13 Wesley13
3年前
Oracle:Pivot 转多列并包含多个名称
SELECTFROM(SELECTl.DISTRIBUTOR_ID,d.SKU_CODE,d.WH_CODE,d.ORDER_PACKAGES,d.PRICE,d.YEARLY||d.MONTHLYasYM,d
Stella981 Stella981
3年前
PowerDesigner列名、注释内容互换
在用PowerDesigner时,常常在NAME或Comment中写中文在Code中写英文,Name只会显示给我们看,Code会使用在代码中,但Comment中的文字会保存到数据库TABLE的Description中,有时候我们写好了Name再写一次Comment很麻烦,以下两段代码就可以解决这个问题。在PowerDesigner中PowerDesig