# yum ## 简介 yum是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM软件包安装性而开发的一种软件包管理器。yum 的宗旨是自动化地升级,安装/移除rpm 包,收集rpm 包的相关信息,检查依赖性并自动提示用户解决方案。yum 的关键之处是要有可靠的 repository,顾名思义,这个就是软件的仓库,可以是 http 或者 ftp 站点,也可以是其他仓库,但是必须包含 rpm 的 header,header 包括了 rpm 包的各种信息,包括描述、功能、提供的文件、依赖性等。正是收集了这些header 并加以分析,才能自动化地完成余下的任务。 yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个 distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等操作,减少了Linux用户一直头疼的依赖问题。yum 可以同时配置多个资源库(repository),配置文件(/etc/yum.conf),自动解决增加或删除rpm 包时遇到的依赖性问题,保持与RPM 数据库的一致性。 ## 安装和查看 ```bash rpm -qa | grep yum ``` ## yum配置 yum 的配置文件分为两个部分:main 和 repository - main 部分定义了全局配置选项,整个yum配置文件应该只有一个main。文件位置`/etc/yum.conf` 。 - repository 部分定义了每个源/服务器的具体配置,可以有一个或者多个。文件位置 `/etc/yum.repos.d/` 目录下。 ```bash #查看main配置 cat /etc/yum.conf =============================================================================== [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release # This is the default, if you make this bigger yum won't see if the metadata # is newer on the remote and so you'll "gain" the bandwidth of not having to # download the new metadata and "pay" for it by yum not having correct # information. # It is esp. important, to have correct metadata, for distributions like # Fedora which don't keep old packages around. If you don't like this checking # interupting your command line usage, it's much better to have something # manually check the metadata once an hour (yum-updatesd will do this). # metadata_expire=90m # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d ================================================================================ [main] cachedir=/var/cache/yum   //yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,默认设置为/var/cache/yum keepcache=0   //安装完成后是否保留软件包,0为不保留(默认为0),1为保留 debuglevel=2   //Debug 信息输出等级,范围为0-10,缺省为2 logfile=/var/log/yum.log   //yum 日志文件位置。用户可以到/var/log/yum.log 文件去查询过去所做的更新。 pkgpolicy=newest   //包的策略。一共有两个选项,newest 和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository 中同时存在,yum 应该安装哪一个,如果是newest,则yum 会安装最新的那个版本。如果是last,则yum 会将服务器id 以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。 distroverpkg=redhat-release   //指定一个软件包,yum 会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm 包。 tolerant=1   //有1和0两个选项,表示yum 是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum 不会出现错误信息。默认是0。 exactarch=1   //有1和0两个选项,设置为1,则yum 只会安装和系统架构匹配的软件包,例如,yum 不会将i686的软件包安装在适合i386的系统中。默认为1。 retries=6   //网络连接发生错误后的重试次数,如果设为0,则会无限重试。默认值为6. obsoletes=1   //这是一个update 的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包。 plugins=1   //是否启用插件,默认1为允许,0表示不允许。我们一般会用yum-fastestmirror这个插件。 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum ``` 配置yum源一般都在 repository 中配置。 ```bash cd /etc/yum.repos.d/ ll -rw-r--r-- 1 root root 675 Mar 25 16:11 CentOS-Base.repo -rw-r--r-- 1 root root 1309 Nov 23 2020 CentOS-CR.repo -rw-r--r-- 1 root root 649 Nov 23 2020 CentOS-Debuginfo.repo -rw-r--r-- 1 root root 314 Nov 23 2020 CentOS-fasttrack.repo -rw-r--r-- 1 root root 630 Nov 23 2020 CentOS-Media.repo -rw-r--r-- 1 root root 1331 Nov 23 2020 CentOS-Sources.repo -rw-r--r-- 1 root root 8515 Nov 23 2020 CentOS-Vault.repo -rw-r--r-- 1 root root 616 Nov 23 2020 CentOS-x86_64-kernel.repo -rw-r--r-- 1 root root 230 Mar 25 16:11 epel.repo #CentOS-Base.repo 是yum网络源的配置文件 #通常情况下CentOS-Base.repo 文件生效, #CentOS-Media.repo 是yum本地源的配置文件 #这都是阿里源的配置 #############配置阿里yum源############ #下载 wget http://mirrors.aliyun.com/repo/Centos-7.repo #备份原yum配置文件 mv CentOS-Base.repo CentOS-Base.repo.bak #用下载的替换默认yum配置文件 mv Centos-7.repo CentOS-Base.repo #清理缓存 yum clean all #重新生成缓存 yum makecache #查看当前的yum源 yum repolist #或者 yum repoinfo ```