一、yum仓库
1. yum简介
yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。
为什么会有依赖关系的发生 因为linux本身就是以系统简洁为自身优势,所以在安装操作系统的时候并没有将所有的库文件以及编译软件包进行安装,所以在linux操作系统上进行软件安装的时候会出现软件包依赖的情况。
yum由仓库和客户端组成,也就是整个yum由两部分组成,所以yum可以存放在两台服务器上。也可以存放在一台服务器上。可以有官方来提供服务,也可以由第三方来提供,比如国内的阿里云,搜狐云,还有一些非盈利组织比如学校等。官方的源一般在国外,下载速度肯定有限,手动更改成国内的云可以大幅提升下载速度。
2. yum实现过程
要有安装包
安装包:
1. 光驱里自带,挂载提供软件包
2. 网络下载到本地
3. 直接通过网络
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
yum需要依赖于环境,依赖于服务端和客户端,允许跨网络
服务器:
-
RPM包 (Packages文件夹中)
-
元数据(repodata文件夹:目录(软件的目录),软件的依赖关系,软件的位置)
客户端的配置文件中
baseurl=地址 一定要写到到 这两个文件夹 repodata packages 的上级目录
最终形成两个文件夹Packages (包文件夹一般取名packages)和 repodata(元数据文件夹)
仓库类型:
-
光盘的仓库基本仓库 比较常用的
-
epel扩展仓库 比较新
3. 如何实现安装服务
二、yum配置文件
1. 主配置文件
文件位置:/etc/yum.conf
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:自定义变量
2. 仓库设置文件
文件位置:/etc/yum.repos.d/*.repo
3. 日志文件
文件位置:/var/log/yum.log
三、yum命令
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
---|---|---|
yum list | 显示所有可用包 | 单个的可安装包 |
yum info | 显示所有可用包的信息 | 单个具体的信息 |
yum search | \ | 模糊查找所有的相关信息 |
yum provides | \ | 精确查找 |
yum grouplist | 显示所有可用包组 | 显示具体的包组 |
yum groupinfo | 显示所有的包组具体信息 | 显示具体的包组的具体信息 |
yum install | \ | 安装具体软件包 |
yum groupinstall | \ | 安装具体软件包组 |
yum update | 所有软件升级 | 具体软件升级 |
yum group update | 所有包组升级 | 具体包组升级 |
yum remove | \ | 卸载具体软件 |
yum groupremove | \ | 卸载具体包组软件 |
yum history | 查看当前yum操作历史 | \ |
yum history undo | 加入序号卸载序号里安装的软件 | \ |
yum history redo | 加入序号重新执行序号里的操作 | \ |
1. 查询软件包
(1)yum list [软件名]
显示可用的安装包,如不加软件名是显示所有的可用包
(2)yum info [软件名]
显示安装包详细信息
(3)yum search <关键词>
根据关键字查找软件安装包
(4)yum provides <关键词>
你知道某个命令却不知道具体的包可以用此命令查找
(5)yum grouplist [包组名]
安装包组的查询 不加包组名 就是显示所有(此处例子由于安装了中文环境,无法显示英文包组名称无法直接复制中文使用,建议直接安装英文操作系统)
(6)yum groupinfo <包组名>
不加包组名显示全部
2. 安装、升级软件包
(1)yum install [软件名]
安装软件包
(2)yum groupinstall <包组名>
安装具体软件包组
(3)yum update
更新包组,可以单个也可以全部 后面加具体包组名称就是单个更新,不加就是全部更新。
(4)yum groupupdate
组包更新
3. 卸载软件包
(1)yum remove <软件名>
卸载已安装的软件必须加软件名
(2)yum groupremove <包组名>
同软件包卸载
(3)yum history
查看历史的使用记录
选择ID 1,2,3,4
可以使用yum history undo 4 进行卸载,这样对比remove好处是可以将所有的依赖都删除
再次使用yum history 查看多了一条5记录是卸载记录
如果后悔卸载可以使用两种方式
yum history redo 4 (重新安装一遍)
yum history undo 5 (反悔卸载等于重新安装一遍)
四、搭建仓库的方式
软件仓库的提供方式:
FTP服务:ftp://ip地址/站点里路径
HTTP服务:http://域名或者ip地址/站点里的路径
本地目录:file://绝对路径 (file:///mnt 此处第三个/为根目录)
1. 搭建本地yum仓库
1. 首先将光驱中的镜像文件进行挂载(先将虚拟机的光盘载入)
2. 切换到 yum.repo.d 目录 将自带的仓库移走,多个开启仓库文件可能会造成冲突无法使用
3. 新建yum仓库文件
4. yum list 检查仓库 无报错信息即可正常使用。
yum仓库文件
2. 搭建阿里云仓库
1. 切换到 yum.repo.d 目录,将自带的仓库移走
2. 新建aliyun仓库
CentOS系统的yum源
#阿里云
https://mirrors.aliyun.com/centos/$releasever/
#腾讯云
https://mirrors.cloud.tencent.com/centos/$releasever/
#华为云
https://repo.huaweicloud.com/centos/$releasever/
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/
EPEL的yum源
#阿里云
https://mirrors.aliyun.com/epel/$releasever/x86_64
#腾讯云
https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
#华为云
https://mirrors.huaweicloud.com/epel/$releasever/x86_64
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64
#更新源
http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/
baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64
https://mirrors.cloud.tencent.com/epel/$releasever/x86_64
https://mirrors.huaweicloud.com/epel/$releasever/x86_64
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/x86_64
3. ftp搭建内网yum仓库服务器
服务端:
客户端:
验证:
4. http搭建内网yum仓库服务器
服务端:
客户端:
验证:
五、环境操作
1. 误将 rpm 软件删除
进入急救模式
2. 自行打包后建立元数据
mount /dev/sr0 /mnt/
cp /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
mkdir test
mv tree-1.6.0-10.el7.x86_64.rpm test/
cd test
mkdir packages
mv tree-1.6.0-10.el7.x86_64.rpm packages/
createrepo -v test
cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak/vim tree.repo
[tree]
name=tree
baseurl=file:///data/test
gpgcheck=0yum clean all
yum makecache
yum install tree -y
3. epel源下载到本地使用
[root@localhost ~]#yum install epel-release -y
#安装epel源 生成epel仓库文件[root@localhost ~]# reposync -r epel -p /root/
#下载同步epel源 根据epel仓库文件去找目录[root@localhost ~]# yum -y install createrepo
#安装建立元数据命令[root@localhost ~]# createrepo -v /root/epel
#建立元数据 软件目录 依赖关系
4. 离线安装软件
[root@localhost yum.repos.d]# yum install tree --downloadonly --downloaddir=/opt/
--downloadonly #只下载相关包默认至某一目录
--downloaddir=绝对目录路径 #下载到某一目录
5. 升级内核
1. yum install https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
2. 修改元文件配置
3. 找内核软件包
4. 升级内核
当前内核版本
新安装的内核版本