弄懂yum一篇文章就够了

1. yum是什么?

yum(全称为Yellowdog Updater, Modified)是一个在Fedora、RedHat Enterprise Linux(RHEL)、CentOS等基于RPM(Red Hat Package Manager)的Linux发行版中广泛使用的包管理工具。yum的主要功能包括软件包的安装、卸载、更新和查询,能够自动处理依赖关系,极大地简化了软件包管理的复杂性。

2. yum有什么用?

yum的主要用途包括:

  • 安装软件包:从远程仓库中安装所需的软件包,并自动处理依赖关系。
  • 卸载软件包:卸载系统中的已安装软件包,同时自动处理相关依赖关系。
  • 更新软件包:更新系统中已经安装的软件包到最新版本,确保系统的安全性和稳定性。
  • 查询软件包:提供软件包的信息查询功能,包括可用软件包、已安装软件包的信息,甚至查看某个软件包的文件列表。
  • 管理仓库:通过配置文件管理不同的远程仓库,指定软件包的来源。
3. yum怎么用?

yum的基本用法包括:

  • 安装软件包:使用yum install命令,后跟要安装的软件包名称。例如,yum install httpd用于安装Apache Web服务器。
  • 更新软件包:使用yum update命令来更新已安装的软件包。例如,yum update用于更新所有已安装的软件包。
  • 搜索软件包:使用yum search命令来搜索可用的软件包。例如,yum search mysql用于搜索名为“mysql”的软件包。
  • 删除软件包:使用yum remove命令来删除已安装的软件包。例如,yum remove httpd用于删除Apache Web服务器软件包。
  • 清理缓存:yum会在系统中保存已安装的软件包的副本,可以使用yum clean命令来清理这些缓存文件。例如,yum clean all用于清理所有yum缓存。

4.yum的工作流程

  1. 仓库配置
    • yum首先需要根据配置文件中定义的仓库来获取软件包。这些配置文件通常位于/etc/yum.repos.d/目录下,每个.repo文件代表一个仓库的配置。
    • 配置文件中包含了仓库的URL、是否启用GPG校验、是否启用该仓库等信息。
  2. 元数据下载
    • 当用户执行yum命令(如安装、更新等)时,yum会首先去配置的仓库中下载元数据。
    • 元数据包含了软件包的信息,如名称、版本、依赖关系等。这些信息对于yum来说至关重要,因为它需要根据这些信息来确定如何安装、更新或删除软件包。
  3. 依赖解析
    • yum在下载元数据后,会解析软件包的依赖关系。
    • 它会检查软件包所依赖的其他软件包是否已经安装,如果没有,则会自动下载和安装这些依赖的软件包。
    • 这一步骤是yum能够自动处理依赖关系的核心所在。
  4. 软件包下载
    • 一旦依赖关系解析完毕,yum将根据用户的请求从仓库中下载所需的软件包。
    • 如果软件包已经存在于本地缓存中(默认在/var/cache/yum/$basearch/$releasever),则yum会直接使用缓存中的软件包,以避免不必要的下载。
  5. 安装和更新
    • 下载完成后,yum将执行安装或更新操作。
    • 如果软件包已经安装,yum将检查其版本并进行必要的更新。
    • yum使用事务(Transaction)来管理软件包的安装和更新,以确保软件包的一致性和完整性。事务是一个操作的集合,可以包括多个软件包的安装、更新或删除。
  6. 事务处理
    • yum在事务中执行所有的操作,包括下载、安装、更新或删除软件包。
    • 在执行事务之前,yum会向用户显示一个摘要并请求确认。一旦用户确认,yum将执行事务中的所有操作。
  7. 缓存管理
    • yum还提供了缓存管理功能,允许用户清理不再需要的缓存文件以节省磁盘空间。
    • 常用的缓存清理命令包括yum clean packages(清除缓存目录下的软件包)、yum clean headers(清除缓存目录下的headers)和yum clean all(清除所有缓存文件)。
5. yum的配置文件及解析

yum的配置文件主要包括全局配置文件(如/etc/yum.conf)和仓库配置文件(位于/etc/yum.repos.d/目录下的.repo文件)。

  • 全局配置文件(yum.conf):该文件包含了yum的全局性设置,如缓存目录、日志文件位置、包的策略、发行版信息、重试次数等。例如,cachedir指定了yum缓存的目录,logfile指定了yum的日志文件位置。
    [main]
    
    #cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum/$basearch/$releasever。
    cachedir=/var/cache/yum/$basearch/$releasever 
    
    #keepcache:是否保留缓存内容,0:表示安装后删除软件包,1表示安装后保留软件包
    keepcache=1
    
    #debuglevel:除错级别,0──10,默认是2 貌似只记录安装和删除记录
    debuglevel=2
    
    #logfile:存放系统更新软件的日志的目录。用户可以到/var/log/yum.log文件去查询自己在过去的日子里都做了哪些更新。
    logfile=/var/log/yum.log
    
    #pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。
    pkgpolicy=newest
    
    #指定一个软件包,yum会根据这个包判断你的发行版本,默认是RedHat-release,也可以是安装的任何针对自己发行版的rpm包。
    distroverpkg=CentOS-release
    
    #tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
    tolerant=1
    
    #exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
    exactarch=1
    
    #retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。
    retries=20
    
    #此选项在进行发行版跨版本升级的时候会用到。
    obsoletes=1
    
    #gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的。
    gpgcheck=1
    
    #默认都会被include 进来 也就是说 /etc/yum.repos.d/xx.repo 无论配置文件有多少个 每个里面有多少个[name] 最后其实都被整合到 一个里面看就是了 重复的[name]后面的覆盖前面的
    reposdir=/etc/yy.rm #默认是 /etc/yum.repos.d/ 低下的 xx.repo后缀文件
    
    #exclude 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
    exclude=xxx
    
    #该选项用户指定 .repo 文件的绝对路径。.repo 文件包含软件仓库的信息 (作用与 /etc/yum.conf 文件中的 [repository] 片段相同)。
    reposdir=[包含 .repo 文件的目录的绝对路径]

  • 仓库配置文件(.repo文件):这些文件用于指定软件包的来源,包括仓库的名称、描述、基础URL、是否启用GPG校验等。每个.repo文件都代表一个仓库的配置,通过[serverid]来区分不同的仓库。例如,baseurl指定了仓库的URL,enabled指定了该仓库是否启用。
  • #serverid是用于区别各个不同的repository,必须有一个独一无二的名称。若重复了,是前面覆盖后面--还是反过来呢???用enabled 测试是后面覆盖前面
    [serverid]
    
    #name,是对repository的描述,支持像$releasever $basearch这样的变量; name=Fedora Core $releasever - $basearch - Released Updates
    name=Some name for this server
    
    #baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:
    #baseurl=url://server1/path/to/repository/
    #url://server2/path/to/repository/
    #url://server3/path/to/repository/
    #其中url支持的协议有 http:// ftp:// file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但#baseurl只能有一个,也就是说不能像如下格式:
    #baseurl=url://server1/path/to/repository/
    #baseurl=url://server2/path/to/repository/
    #baseurl=url://server3/path/to/repository/
    #其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。
    baseurl=url://path/to/repository/
    
    #指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,将$releasever和$basearch替换
    #成自己对应的版本和架构,例如10和i386,在浏览器中打开,我们就能看到一长串镜可用的镜像服务器地址列表。
    #解释下几个变量
    #$releasever  发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
    #$arch   cpu体系,如i686,athlon等
    #$basearch   cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。
    #
    #url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如:
    #gpgcheck=1
    #exclude=gaim
    #其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用
    #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
    
    #failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。
    failovermethod=priority
    
    #当某个软件仓库被配置成 enabled=0 时,yum 在安装或升级软件包时不会将该仓库做为软件包提供源。使用这个选项,可以启用或禁用软件仓库。
    #通过 yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 选项,或者通过 PackageKit 的"添加/删除软件"工具,也能够方便地启用和禁用指定的软件仓库
    enabled=[1 or 0]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值