1 yum仓库
1.1 yum仓库介绍
yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间 为什么会有依赖关系的发生 因为linux本身就是以系统简洁为自身优势,所以在安装操作系统的时候并没有将所有的库文件以及编译软件包进行安装,所以在linux操作系统上进行软件安装的时候会出现软件包依赖的情况。yum由仓库和客户端组成,也就是整个yum由两部分组成,所以yum可以存放在两台服务器上。也可以存放在一台服务器上。可以有官方来提供服务,也可以由第三方来提供,比如国内的阿里云,搜狐云,还有一些非盈利组织比如学校等。官方的源一般在国外,下载速度肯定有限,手动更改成国内的云可以大幅提升下载速度。
YUM 的前身是 YUP(Yellow dog Updater,Yellow dog Linux 的软件更新器),最初由 TSS 公司(Terra Soft Solutions,INC.)使用 Python 语言开发而成,后来由杜克大学(Duck University)的 Linux 开发队伍进行改进,命名为 YUM(Yellow dog Updater,Modified)。 要成功使用 YUM 机制来更新系统和软件,需要有一个包含各种 rpm 安装包文件及其依 赖软件的软件仓库(repository),提供软件仓库的服务器也称为“源”服务器。在客户机中只 要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件。
1.2 yum仓库的实现过程
安装包:光驱自带,挂载提供安装包
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
yum需要依赖于环境,依赖于服务端和客户端,允许跨网络
服务器:
-
RPM包 (Packages文件夹中)
-
元数据(repodata文件夹:目录(软件的目录),软件的依赖关系,软件的位置)
客户端的配置文件中
baseurl=地址 一定要写到到 这两个文件夹 repodata packages 的上级目录
最终形成两个文件夹Packages (包文件夹一般取名packages)和 repodata(元数据文件夹)
仓库类型:
-
光盘的仓库基本仓库 比较常用的
-
epel扩展仓库 比较新
1.3 yum如何实现安装服务
yum客户端 yum服务端
根据配置文件找到仓库位置 下载元信息
找到对应的包的位置 将包下载到本地
1.4 yum配置文件及命令
主配置文件:
/etc/yum.conf
cachedir=/var/cache/yum/$basearch/$releasever //yum下载的RPM包的缓存目录 $basearch代表硬件架构 $releasever系统版本比如7 keepcache=0 //是否保存缓存 0代表不保存,1代表保存 debuglevel=2 //调试级别了解即可 logfile=/var/log/yum.log // 日志文件位置 exactarch=1 //是否允许不同版本的rpm安装 obsoletes=1 //update 的一个参数是否可以允许旧版本的运行 gpgcheck=1 //验证秘钥 plugins=1 //是否允许插件1代表可以 installonly_limit=5 //保存几个内核 5代表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
yum的repo配置文件中可用的变量: $releasever: 当前OS的发行版的主版本号,如:8,7,6 $arch: CPU架构,如:aarch64, i586, i686,x86_64等 $basearch:系统基础平台;i386, x86_64 $contentdir:表示目录,比如:centos-8,centos-7 $YUM0-$YUM9:自定义变量
yum仓库设置文件
/etc/yum.repos.d/*.repo yum仓库文件位置
官方源和网络源需要联网使用,本地源则不需要
日志文件
/var/log/yum.log 日志文件
1.5 yum命令详解
命令 | 不加关键字 | 加入关键字、软件包 |
---|---|---|
yum list | 显示所有可用包 | 单个的可安装包 |
yum info | 显示所有可用包的信息 | 单个具体的信息 |
yum search | \ | 模糊查找所有的相关信息 |
yum provides | \ | 精确查找 |
yum grouplist | 显示所有可用包组 | 显示具体的包组 |
yum groupinfo | 显示所有的包组具体信息 | 显示具体的包组的具体信息 |
yum install | \ | 安装具体软件包 |
yum groupinstall | \ | 安装具体软件包组 |
yum update | 所有软件升级 | 具体软件升级 |
yum groupupdate | 所有包组升级 | 具体包组升级 |
yum remove | \ | 卸载具体软件 |
yum groupremove | \ | 卸载具体包组软件 |
yum history | 查看当前yum操作历史 | \ |
yum history undo | 加入序号卸载序号里安装的软件 | \ |
yum history redo | 加入序号重新执行序号里的操作 | \ |
1.6 查询
yum list 【软件名】
显示可用的安装包,如不加软件名是显示所有的可用包
yum info 【软件名】
显示安装包详细信息
yum search <关键字>
根据关键字查找软件安装包,相当于你只知道这个包里的某个关键字会全部给你匹配出来(模糊查找)
yum provides <关键词>
知道某个命令却不知道具体的包可以用此命令查找
yum grouplist [包组名]
安装包组的查询 不加包组名 就是显示所有(此处例子由于安装了中文环境,无法显示英文包组名称无法直接复制中文使用,建议直接安装英文操作系统)
yum groupinfo <包组名>
不加包组名显示全部
1.7 yum安装升级
yum install 【软件名】
会自动解决依赖关系
yum groupinstall
包组安装同yum install
yum update
更新包组,可以单个也可以全部 后面加具体包组名称就是单个更新,不加就是全部更新。
但是首先你要有更新的包组库否则也无法更新。
yum remove <软件名>
卸载已安装的软件必须加软件名
yum groupremove <包组名>
同软件包卸载不做赘述
yum history
查看历史的使用记录
2 搭建yum仓库的方式
2.1 http方式搭建yum仓库
服务端:yum install httpd -y
systemctl start httpd
mount /dev/sr0 /var/www/html
客户端:
cd /etc/yum.repos.d
mkdir bak mv *.repo bak
vim http.repo
[http] name=http
baseurl=http://192.168.91.100/
gpgcheck=0
yum clean all
yum makecache
yum install tree
2.2 ftp方式搭建yum仓库
服务端:
yum install vsftpd -y
systemctl start vsftpd
mkdir /var/ftp/ky33
mount /dev/sr0 /var/ftp/ky33
客户端:
cd /etc/yum.repos.d
mkdir bak mv *.repo bak
vim http.repo
[http] name=http
baseurl=ftp://192.168.91.100/ky33
gpgcheck=0
yum clean all
yum makecache
yum install tree