yum介绍

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1.联网获取软件
2.基于RPM管理
3.自动解决依赖(前提:1.yum仓库中必须有该依赖包 2.版本要一致)
4.命令简单好记
5.生产最佳实践

yum是RedHat以及CentOS中的软件包管理器,能够通过互联网下载以rpm结尾的包,并且安装,并可以自动
处理依赖性关系,无需繁琐的一次次下载安装。
yum仓库 | yum源
# CentOS7和7之前所有版本:YUM
yum install -y xx
# CentOS8以后:dnf
dnf install xxx
## 系统自带的基础包仓库
Base源
## 更换yum源,一定要至少换两个源
- Base源 基础包
- epel源 扩展包

如何配置yum源

1
2
3
4
5
6
各大镜像源:
阿里云:https://opsx.alibaba.com/mirror
清华源:https://mirrors.tuna.tsinghua.edu.cn/
163源:http://mirrors.163.com/
华为源:https://mirrors.huaweicloud.com/
科大源:http://mirrors.ustc.edu.cn/

配置Base源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@lb01 ~]# ll /etc/yum.repos.d/    yum源配置文件
## 注意:所有的配置文件,必须以repo结尾
wget
-O:指定保存的路径和文件名
https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o = wget -O
## 换源步骤
1)清空/etc/yum.repos.d下面所有源配置文件(mv rm
[root@localhost ~]# mv /etc/yum.repos.d/*.repo /tmp/
[root@localhost ~]# gzip /etc/yum.repos.d/*
2)下载国内各大镜像站源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

换源

1
2
3
4
5
6
7
8
##使用镜像站源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

## 其他镜像站换源方式 (缺陷:1.麻烦2.如果不是默认的官方base源,这个替换就不成立)
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo

更换epel源

1
2
3
4
5
[root@localhost ~]# curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
[root@localhost ~]# ll /etc/yum.repos.d/
total 8
-rw-r--r--. 1 root root 1759 Apr 22 18:55 CentOS-Base.repo
-rw-r--r--. 1 root root 664 Apr 22 19:08 epel.repo

yum管理命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#根据命令搜索对应的包名
[root@yum_repo ~]# yum provides pstree 注意:yum provides命令只能用于已经安装的软件包
[root@yum_repo ~]# yum search pstree

## 查看我当前配置的所有仓库中的可以安装的包
[root@localhost ~]# yum list
[root@localhost ~]# yum list|grep net-tools

## 查看仓库中指定包的详细信息
[root@localhost ~]# yum info 包名
[root@localhost ~]# yum info tree

## 查看当前所有可用仓库
[root@lb01 yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
## 仓库ID名字 .repo文件中 [仓库ID] ## 仓库描述信息 .repo文件中的name= ## 状态:该仓库中有多少rpm包
repo id repo name status
base/7/x86_64 CentOS-7 - Base - mirrors.huaweicloud.com 10,072
extras/7/x86_64 CentOS-7 - Extras - mirrors.huaweicloud.com 526
updates/7/x86_64 CentOS-7 - Updates - mirrors.huaweicloud.com 5,802
repolist: 16,400
repolist: 30,679 ## 所有可用仓库总共包的数量

# 查看所有仓库信息,可用和不可用的都展示出来
[root@localhost ~]# yum repolist all

yum安装命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
## 安装指定软件
[root@localhost ~]# yum install 包名
[root@localhost ~]# yum install vim
Is this ok [y/d/N]:
输入y:yes安装
输入d:download 仅下载不安装
输入N:No不安装
## 免交互安装
[root@localhost ~]# yum install vim -y
[root@localhost ~]# yum -y install vim
[root@localhost ~]# yum install -y vim
## yum安装方式:
# 方式一:安装仓库中的包
[root@localhost ~]# yum install vim
# 方式二:安装本地的包
[root@localhost Packages]# yum localinstall -y wget-1.14-18.el7.x86_64.rpm
# 方式三:远程互联网安装
[root@localhost Packages]# yum install -y http://test.driverzeng.com/MySQL_plugins/mha4mysql-node-0.56-0.el6.noarch.rpm

## 指定目录下载
[root@localhost ~]# yum install --downloadonly --downloaddir=/opt/ nginx

yum重装/更新/删除

1
2
3
4
5
6
7
8
9
10
11
12
13
## 误删除服务的相关文件重装
[root@localhost nginx]# yum reinstall -y nginx

## yum查询可以更新的软件
[root@localhost nginx]# yum check-update
## 更新指定软件
[root@localhost nginx]# yum update acl -y
##全部软件都更新(Waring:慎用)
[root@localhost nginx]# yum update -y

## 删除指定软件
[root@localhost nginx]# yum remove -y tree
[root@localhost nginx]# yum erase -y tree

yum逆向查询/缓存

1
2
3
4
5
6
7
8
#查询某个命令属于哪个包
[root@localhost nginx]# yum provides */ifconfig

## 加载缓存
[root@localhost nginx]# yum makecache
## 清除缓存
[root@localhost nginx]# yum clean all

爬取zabbix5.0相关所有rpm包

1
https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/?spm=a2c6h.25603864.0.0.239b5d4a bvLbEB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1.指定下载目录
[root@lb01 ~]# curl -s https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/?spm=a2c6h.25603864.0.0.239b5d4a bvLbEB|awk -F '"' '/rpm/{print "mkdir -p /repo/zabbix/;wget -O /repo/zabbix/"$4" https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/"$4}'|bash


2.下载到当前目录
[root@lb01 ~]# curl -s https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64|awk -F '"' '/rpm/{print $4}'|sed 's#zabbix#https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix#g'|xargs wget


1.curl 网站获取网页内容
[root@lb01 ~]# curl -s https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64
2.截取所有rpm包名
[root@lb01 ~]# curl -s https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64|awk -F '"' '/rpm/{print $4}'
zabbix-agent-5.0.0-1.el7.x86_64.rpm
zabbix-agent-5.0.1-1.el7.x86_64.rpm
zabbix-agent-5.0.10-1.el7.x86_64.rpm
zabbix-agent-5.0.11-1.el7.x86_64.rpm
3.补全公共下载链接https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/?spm=a2c6h.25603864.0.0.239b5d4a bvLbEB
sed 's#zabbix#https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix#g'
4.拼接命令交给wget
[root@lb01 ~]# curl -s https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64|awk -F '"' '/rpm/{print $4}'|sed 's#zabbix#https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix#g'|xargs wget

yum程序的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# cat /etc/yum.conf
cachedir=/var/cache/yum/$basearch/$releasever //缓存目录
keepcache=0 //缓存软件包, 1启动 0 关闭
debuglevel=2 //调试级别
logfile=/var/log/yum.log //日志记录位置
exactarch=1 //检查平台是否兼容
obsoletes=1 //检查包是否废弃
gpgcheck=1 //检查来源是否合法,需要有制作者的公钥信息
plugins=1 //是否启用查询
installonly_limit=5
bugtracker_url
# metadata_expire=90m //每小时手动检查元数据
# in /etc/yum.repos.d //包含repos.d目录

yum包组相关命令

1
2
3
4
5
6
7
# 查看有哪些包组
[root@localhost ~]# yum groups list
# 安装指定包组
[root@localhost ~]# yum groups install Development tools Compatibility libraries
Base Debugging Tools
# 删除指定包组
[root@localhost ~]# yum groups remove -y Base

yum包历史相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
## 查看yum执行的历史
[root@localhost ~]# yum history
Loaded plugins: fastestmirror
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
6 | root <root> | 2024-04-23 18:05 | Install | 1
5 | root <root> | 2024-04-23 17:09 | Update | 2
4 | root <root> | 2024-03-26 17:36 | Install | 1
3 | root <root> | 2024-03-26 17:31 | Install | 1
2 | root <root> | 2024-03-22 15:55 | Install | 1
1 | System <unset> | 2024-03-21 20:50 | Install | 308
## 查看指定历史记录的详细信息
[root@localhost ~]# yum history info 6
Loaded plugins: fastestmirror
Transaction ID : 6
Begin time : Tue Apr 23 18:05:41 2024
Begin rpmdb : 311:bc74a8339d5853ce2035d376bffbbeeb40d44ae3
End time : 18:05:42 2024 (1 seconds)
End rpmdb : 312:44280ba9419b586ea77d5fa483785725fe7e9758
User : root <root>
Return-Code : Success
Command Line : install -y tree
Transaction performed with:
Installed rpm-4.11.3-35.el7.x86_64 @anaconda
Installed yum-3.4.3-161.el7.centos.noarch @anaconda
Installed yum-plugin-fastestmirror-1.1.31-50.el7.noarch @anaconda
Packages Altered:
Install tree-1.6.0-10.el7.x86_64 @base
history info
## 回滚指定操作
[root@localhost ~]# yum history undo 6 -y

制作yum仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
条件:
1.制作仓库,一定要有存放rpm包的目录
2.会配置repo仓库文件
## repo配置文件内容解析
# 仓库名
[base]
# 描述信息
name=CentOS-$releasever - Base - mirrors.aliyun.com
# 仓库地址
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
# 是否开启yum仓库签名机制检测
gpgcheck=1 // 0 代表关闭,不检测 1 代表开启,检测
# gpg钥匙的地址
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
## 是否开启yum仓库
enabled=0 // 是否开启该仓库,0代表关闭 1代表开启
## 密钥对
钥匙

## 仓库地址支持的协议:
- http:// 远程协议
- https:// 远程协议
- ftp:// 远程协议
- file:// 本地协议,只能访问本机

制作仓库(本地yum仓库)

1
2
3
4
5
6
7
8
9
10
11
12
# 1.安装createrepo命令
[root@localhost ~]# yum install -y createrepo
# 2.让目录编程yum仓库 createrepo
[root@localhost ~]# createrepo /repo/zabbix/
Spawning worker 0 with 475 pkgs
# 3.配置仓库文件
[root@localhost yum.repos.d]# vim zls.repo
[zls_repo]
name=zls's yum repository xxxx
baseurl=file:///repo/zabbix/
gpgcheck=0
enabled=1

如何在仓库中新加RPM包

1
2
3
4
5
6
# 1.将rpm放入仓库
wget cp mv ...
# 2.重新更新仓库
[root@localhost repo]# createrepo --update /repo
# 3.用户使用仓库时,需要重新加载缓存
[root@localhost ~]# yum makecache

需求:将/dev/cdrom中的rpm包,拷贝到 /zls/base目录下,然后将该目录制作成本地的yum仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 1.创建目录
[root@localhost ~]# mkdir -p /zls/base
# 2.挂载镜像
[root@localhost ~]# mount /dev/cdrom /mnt
# 3.拷贝rpm包
[root@localhost ~]# cp /mnt/Packages/*.rpm /zls/base/
# 4.制作仓库
[root@localhost ~]# createrepo /zls/base/
# 5.编写repo文件
[root@localhost ~]# vi /etc/yum.repos.d/zls.repo
[zls_repo]
name=zls's yum repository xxxx
baseurl=file:///repo/
gpgcheck=0
enabled=1

制作远程yum仓库

环境准备

主机 ip 角色
yum_repo 10.0.0.101 yum仓库
web01 10.0.0.102 使用yum仓库的机器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
## 可选协议:
- http:// 远程协议
- https:// 远程协议(别考虑)
- ftp:// 远程协议
## 克隆新的主机修改主机名和IP
# 修改主机名
[root@web01 ~]# hostnamectl set-hostname yum_repo
[root@web01 ~]# hostnamectl set-hostname web01
# 修改IP
## 关闭防火墙
[root@yum_repo ~]# systemctl stop firewalld
[root@web01 ~]# systemctl stop firewalld
## 关闭selinux
[root@web01 ~]# setenforce 0
[root@web01 ~]# getenforce
Permissive

使用ftp制作yum仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 1.安装ftp协议的软件
[root@yum_repo ~]# yum install -y vsftpd
# 2.启动vsftpd
[root@yum_repo ~]# systemctl start vsftpd
[root@yum_repo ~]# systemctl enable vsftpd
# 3.打开浏览器访问 ftp://10.0.0.101
# 4.查找ftp的目录所在
[root@yum_repo pub]# rpm -ql vsftpd|grep pub
/var/ftp/pub
# 5.pub目录就可以当做yum仓库
[root@yum_repo pub]# mount /dev/cdrom /mnt/
[root@yum_repo pub]# cp /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm /mnt/Packages/wget-1.14-18.el7.x86_64.rpm base/
# 6.安装制作仓库的命令
[root@yum_repo ~]# yum install -y createrepo
# 7.制作yum仓库
[root@yum_repo ~]# createrepo /var/ftp/pub/base/
Spawning worker 0 with 2 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
# 8.准备repo文件
[root@yum_repo base]# vim zls_base.repo
[zls_base_repo]
name=test
baseurl=ftp://10.0.0.101/pub/base/
gpgcheck=0
enabled=1
## 其他用户想要使用该yum源,只需要下载
[root@web01 ~]# curl -o /etc/yum.repos.d/zls_base.repo
ftp://10.0.0.101/pub/base/zls_base.repo
[root@web01 ~]# vim /etc/yum.repos.d/xxx.repo
[zls_base_repo]
name=test
baseurl=ftp://10.0.0.101/pub/base/
gpgcheck=0
enabled=1

使用nginx制作远程yum仓库

环境准备

主机 ip 角色
yum_repo 10.0.0.101 yum仓库
web01 10.0.0.102 使用yum仓库的机器

前期准备

1
2
3
4
5
6
7
8
9
10
11
12
#克隆虚拟机
# 克隆新的主机修改主机名和IP
[root@web01 ~]# hostnamectl set-hostname yum_repo
[root@web01 ~]# hostnamectl set-hostname web01
# 修改IP
## 关闭防火墙
[root@yum_repo ~]# systemctl stop firewalld
[root@web01 ~]# systemctl stop firewalld
## 关闭selinux
[root@web01 ~]# setenforce 0
[root@web01 ~]# getenforce
Permissive

使用nginx制作yum仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#1.安装nginx
[root@yum_repo ~]# yum -y install nginx
#2.启动nginx
[root@yum_repo ~]# systemctl start nginx
[root@yum_repo ~]# systemctl enable nginx
#3.创建base源和zabbix的yum库
[root@yum_repo yum]# mkdir /etc/repo/yum/{base,zabbix} -p

[root@yum_repo yum]# mkdir /etc/repo/yum/base/ -p
[root@yum_repo yum]# mkdir /etc/repo/yum/zabbix/ -p
#获取base包
[root@web01 ~]# mount /dev/cdrom /mnt/
[root@yum_repo yum]# cp /mnt/Packages/* /etc/repo/yum/base/
拷贝爬取的zabbix的包到/etc/repo/yum/zabbix下
[root@lb01 nginx]# cp /repo/zabbix/* /etc/repo/yum/zabbix
#4.安装制作仓库的命令
[root@yum_repo ~]# yum install -y createrepo
#5.制作yum仓库
[root@yum_repo yum]# createrepo /etc/repo/yum/base/
[root@yum_repo yum]# createrepo /etc/repo/yum/zabbix/
#6.修改ngingx配置文件
[root@yum_repo nginx]# vim /etc/nginx/nginx.conf

#在nginx.confp配置文件中添加以下内容,
location / {
45 autoindex on;
46 root /etc/repo/yum; #指定本地yum仓库位置
47 }

# 添加位置是在server{ }里 如下
server {
listen 80;
listen [::]:80;
server_name _;
root /usr/share/nginx/html;

location / {
autoindex on;
root /etc/repo/yum;
}
}

#或者[root@yum_repo ~]# cat /etc/nginx/conf.d/yum_repo.conf
这个前提是,nginx.confp配置文件里没有server{ }这个内容,相当于把这段命令写在conf.d配置文件里
server{
listen 80;
server_name _;
location /{
autoindex on;
root /yum_repo;
index index.html;
}
}


#检测语法有没有问题
[root@yum_repo ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

#重启nginx
[root@yum_repo ~]# systemctl restart nginx
#7.准备repo文件
[root@yum_repo base]# vim nginx.repo
[nginx_repo]
name=test
baseurl=10.0.0.101/base/
gpgcheck=0
enabled=1

[nginx_repo]
name=test
baseurl=10.0.0.101/zabbix/
gpgcheck=0
enabled=1
可以将nginx.repo文件放在 /etc/repo/yum/目录下
#8.切换到web01客户端
下载制作的nginx.repo源
[root@web01 ~]# wget -O /etc/yum.repos.d/ http://10.0.0.101/nginx.repo
删除web01客户端其它源,只留nginx.repo源,使用安装rpm包测试我们制作的yum源

image-20240423210955932