1、YUM 功能作用
- YUM(Yellow dog Updater Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。
- YUM 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
RPM (RedHat Package Manager)一种通过资料库管理的方式将所需要的软件安装到主机上的管理程序。特点:事先已经编译好,安装方便。生成 .RPM 扩展名的文件。
- 文件服务器:保存RPM包、元数据文件、conf文件、binary信息。并通过文件共享服务让外部客户端可以访问到存放RPM包的目录。
- 客户端:支持RPM包管理基本功能,本地有YUM程序;有配置文件(配置远程服务器YUM仓库或本地服务器YUM仓库)。
2、YUM 执行流程
- 客户端接收到YUM命令后,会向着本地配置文件中配置的服务器地址(URL)发起连接。
- YUM不会直接向服务器请求程序包,而是请求YUM服务器上存放RPM包名、版本、包和包之间依赖关系的元数据文件。
- 这个文件下载到本地之后,会先存放到cache中,然后YUM会在本地上分析这个文件中是否存有要安装程序包的包名,如果有就根据这个元数据文件尝试分析该包的依赖关系,得出要依赖哪些程序包之后,就在本地已安装的程序包中查询被依赖的包中哪些已安装,哪些没有安装;
- 分析完之后,YUM会启动文件服务器的客户端向着YUM服务器下载那些没有安装的程序包。
- 下载完成后先缓存在本地,在本地开始执行类似于RPM安装的操作;
- 安装时会先安装被依赖的程序包,所有程序包安装完成后会通知客户端,并自动删除缓存区中的程序包以节省空间;
- 元数据不会被删除,因为下次再安装新的程序包时,直接分析本地的元数据就可以获取依赖关系,通过这种方式可以节省时间与网络带宽。
- 上述这种机制,也存在着一些问题,万一服务器上的程序包或者依赖关系发生了变化,就会导致服务器和客户端本地的元数据不一致。
- 可以在每次使用YUM的时候,都向服务器请求元数据。但是这种方式浪费带宽和时间,有的时候明明没有变化,但还是需要下载。
YUM服务器上有一个特殊文件,文件中记录了每一个元数据文件的校验码,实际上每次运行YUM的时候,都会向服务器请求这个文件,并和本地元数据中的校验码文件进行对比,如果一致则代表元数据没有变化,本地元数据有效,否则就重新请求元数据。
3、YUM 命令用法
yum [options] [command] [package …]
- options:-h(帮助)-y(当安装过程提示选择全部为 “yes”)-q(不显示安装的过程)等等。
- command:要进行的操作。
- package:安装的包名。
-
列出所有可更新的软件清单命令:yum check-update
-
更新所有软件命令:yum update
-
仅安装指定的软件命令:yum install -y package_name
-
仅更新指定的软件命令:yum update package_name
-
列出所有可安裝的软件清单命令:yum list
-
删除软件包命令:yum remove package_name
-
查找软件包命令:yum search keyword
-
清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers -
清理后重建缓存: yum makecache
示例
[root@ecs-fjx ~]# yum install git
Loaded plugins: fastestmirror
Determining fastest mirrors
base | 2.2 kB 00:00:00
docker-ce-stable | 3.5 kB 00:00:00
epel | 3.3 kB 00:00:00
extras | 1.5 kB 00:00:00
updates | 1.5 kB 00:00:00
(1/5): epel/x86_64/group_gz | 99 kB 00:00:00
(2/5): updates/7/x86_64/primary | 12 MB 00:00:00
(3/5): epel/x86_64/updateinfo | 1.0 MB 00:00:00
(4/5): docker-ce-stable/7/x86_64/primary_db | 97 kB 00:00:00
(5/5): epel/x86_64/primary | 3.9 MB 00:00:05
epel 13747/13747
updates 4724/4724
Resolving Dependencies
--> Running transaction check
---> Package git.x86_64 0:1.8.3.1-24.el7_9 will be installed
--> Processing Dependency: perl-Git = 1.8.3.1-24.el7_9 for package: git-1.8.3.1-24.el7_9.x86_64
--> Processing Dependency: rsync for package: git-1.8.3.1-24.el7_9.x86_64
--> Processing Dependency: perl(Term::ReadKey) for package: git-1.8.3.1-24.el7_9.x86_64
--> Processing Dependency: perl(Git) for package: git-1.8.3.1-24.el7_9.x86_64
--> Processing Dependency: perl(Error) for package: git-1.8.3.1-24.el7_9.x86_64
--> Running transaction check
---> Package perl-Error.noarch 1:0.17020-2.el7 will be installed
---> Package perl-Git.noarch 0:1.8.3.1-24.el7_9 will be installed
---> Package perl-TermReadKey.x86_64 0:2.30-20.el7 will be installed
---> Package rsync.x86_64 0:3.1.2-12.el7_9 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
========================================================================================================
Package Arch Version Repository Size
========================================================================================================
Installing:
git x86_64 1.8.3.1-24.el7_9 updates 4.4 M
Installing for dependencies:
perl-Error noarch 1:0.17020-2.el7 base 32 k
perl-Git noarch 1.8.3.1-24.el7_9 updates 56 k
perl-TermReadKey x86_64 2.30-20.el7 base 31 k
rsync x86_64 3.1.2-12.el7_9 updates 408 k
Transaction Summary
========================================================================================================
Install 1 Package (+4 Dependent packages)
Total download size: 4.9 M
Installed size: 23 M
Is this ok [y/d/N]: t^Hy
Is this ok [y/d/N]: y
Downloading packages:
(1/5): perl-Error-0.17020-2.el7.noarch.rpm | 32 kB 00:00:00
(2/5): perl-Git-1.8.3.1-24.el7_9.noarch.rpm | 56 kB 00:00:00
(3/5): rsync-3.1.2-12.el7_9.x86_64.rpm | 408 kB 00:00:00
(4/5): git-1.8.3.1-24.el7_9.x86_64.rpm | 4.4 MB 00:00:00
(5/5): perl-TermReadKey-2.30-20.el7.x86_64.rpm | 31 kB 00:00:00
--------------------------------------------------------------------------------------------------------
Total 25 MB/s | 4.9 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : 1:perl-Error-0.17020-2.el7.noarch 1/5
Installing : rsync-3.1.2-12.el7_9.x86_64 2/5
Installing : perl-TermReadKey-2.30-20.el7.x86_64 3/5
Installing : perl-Git-1.8.3.1-24.el7_9.noarch 4/5
Installing : git-1.8.3.1-24.el7_9.x86_64 5/5
Verifying : perl-TermReadKey-2.30-20.el7.x86_64 1/5
Verifying : 1:perl-Error-0.17020-2.el7.noarch 2/5
Verifying : perl-Git-1.8.3.1-24.el7_9.noarch 3/5
Verifying : git-1.8.3.1-24.el7_9.x86_64 4/5
Verifying : rsync-3.1.2-12.el7_9.x86_64 5/5
Installed:
git.x86_64 0:1.8.3.1-24.el7_9
Dependency Installed:
perl-Error.noarch 1:0.17020-2.el7 perl-Git.noarch 0:1.8.3.1-24.el7_9
perl-TermReadKey.x86_64 0:2.30-20.el7 rsync.x86_64 0:3.1.2-12.el7_9
Complete!