春衣少年当酒歌,起舞四顾以笑和。这篇文章主要讲述Linux网络服务之部署YUM仓库相关的知识,希望能为你提供帮助。
镜像下载、域名解析、时间同步请点击 阿里云开源镜像站
1 YUM简介
1.1 YUM简介CentOS使用yum和dnf 解决rpm的包依赖关系。
YUM:rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具,CentOS 8 使用dnf代替了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),提供软件仓库的服务器也称为“源”服务器。在客户机中只 要正确指定软件仓库的地址等信息,就可以通过对应的“源”服务器来安装或更新软件。
YUM(Yellow dog Updater,Modified):
- 基于RPM包构建的软件更新机制
- 可以自动解决依赖关系
- 所有软件包由集中到YUM软件仓库提供
文章图片
1.2 yum工作原理yum依赖于环境,依赖于服务端和客户端,允许跨网络。
Yum基于C/S模式:
- yum 服务器存放rpm包和相关包的元数据
- yum客户端访问yum服务器进行安装或查询等
先在yum服务器上创建 yum repository(仓库),在仓库中事先存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下),当yum客户端利用yum/dnf工具进行安装时包时,会自动下载repodata中的元数据,查询远数据是否存在相关的包及依赖关系,自动从仓库中找到相关包下载并安装。
文章图片
服务器(RPM包和元数据缺一不可):
- RPM包 (存放在包文件夹Packages中)
- 元数据(存放在元数据文件夹repodata中,其中包含:目录(软件的目录),软件的依赖关系,软件的分组)
#查看光盘中自带的Yum仓库,可以看到Packages文件夹和repodata文件夹:
?
[root@localhost ~]# mount /dev/sr0 /mnt//将光盘挂载到/mnt/目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# ls /mnt//查看光盘内的包文件夹和元数据文件夹
CentOS_BuildTagGPLLiveOSRPM-GPG-KEY-CentOS-7
EFIimagesPackagesRPM-GPG-KEY-CentOS-Testing-7
EULAisolinuxrepodataTRANS.TBL
文章图片
本地仓库类型:
- 光盘的仓库(基本仓库)
- epel 扩展仓库
文章图片
2 yum客户端配置yum客户端配置文件
/etc/yum.conf#为所有仓库提供公共配置
/etc/yum.repos.d/*.repo#每个仓库的配置文件
2.1 yum主配置文件位置:/etc/yum.conf
[root@localhost ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever//yum下载的RPM包的缓存目录, $basearch代表硬件架构,$releasever系统版本比如7
keepcache=0//是否保存缓存0代表不保存,1代表保存
debuglevel=2//调试级别(0-10),默认为2
logfile=/var/log/yum.log//日志文件位置
exactarch=1//是否允许不同版本的rpm安装
obsoletes=1//这是一个update的参数,是否允许旧版本的运行
gpgcheck=1//是否验证GPG(GNU Private Guard)密钥,1表示验证
plugins=1//是否允许插件,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
?
?
# 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.2 yum仓库配置文件 2.2.1 仓库配置文件说明
位置:/etc/yum.repos.d/*.repo
系统内默认的yum仓库,是centos官方的yum源(国外源),需要连通外网才可以使用。
[root@localhost yum.repos.d]# ls /etc/yum.repos.d/
CentOS-Base.repoCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo
CentOS-CR.repoCentOS-fasttrack.repoCentOS-Sources.repo
?
[root@localhost yum.repos.d]# vim yuji.repo//yum仓库配置文件格式
[yuji]
name=yuji#设置名称
baseurl=file:///mnt#设置链接地址,file://是本地源的固定格式
enabled=1#开启此yum源
gpgcheck=0#是否验证公钥,0表示无需验证
yum仓库配置文件中baseurl的几种形式:
# 本地源
本地目录file://
?
# 网络源
FTP服务ftp://
HTTP服务http://
外网环境https://
2.2.2 baseurl 指向的路径
CentOS系统的yum源
#阿里云
https://mirrors.aliyun.com/centos/$releasever/
EPEL的yum源
#阿里云
https://mirrors.aliyun.com/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/
2.3 日志文件位置:/var/log/yum.log
[root@localhost yum.repos.d]# head -5 /var/log/yum.log//查看日志文件
Jan 19 10:55:29 Installed: tree-1.6.0-10.el7.x86_64
Feb 21 23:21:53 Installed: finger-0.17-52.el7.x86_64
Mar 19 17:10:29 Updated: 32:bind-license-9.11.4-26.P2.el7_9.9.noarch
Mar 19 17:10:30 Updated: 32:bind-libs-lite-9.11.4-26.P2.el7_9.9.x86_64
Mar 19 17:10:30 Updated: 32:bind-libs-9.11.4-26.P2.el7_9.9.x86_64
3 yum命令详解
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
---|---|---|
yum list | 显示所有可用包 | 单个的可安装包 |
yum info | 显示所有可用包的信息 | 单个具体的信息 |
yum search | \\ | 模糊查找所有的相关信息 |
yum whatprovides | \\ | 精确查找 |
yum install | \\ | 安装具体软件包 |
yum update | 所有软件升级,更新内核 | 具体软件升级 |
yum upgrade | 只更新软件包,但不更新内核 | 具体软件更新 |
yum remove | \\ | 卸载具体软件 |
yum history | 查看当前yum操作历史 | \\ |
yum history info | \\ | 加序号列出某次事务的详细信息 |
yum history undo | \\ | 加序号卸载序号里安装的软件 |
yum history redo | \\ | 加序号重新执行序号里的操作 |
命令 | 不加关键字 | 加入关键词、软件包、软件包组 |
---|---|---|
yum grouplist | 显示所有可用包组 | 显示具体的包组 |
yum groupinfo | 显示所有的包组具体信息 | 显示具体的包组的具体信息 |
yum groupinstall | \\ | 安装具体软件包组 |
yum group update | 所有包组升级 | 具体包组升级 |
yum groupremove | \\ | 卸载具体包组软件 |
当使用 “yum remove 软件名” 未将软件包卸载干净时,可以使用“yum history undo 序号”进行卸载,可以完整卸载整个软件包,没有残留。
4 yum仓库搭建方式软件仓库的提供方式:
- 本地目录:file://绝对路径
- FTP服务:ftp://ip地址/站点里的路径
- HTTP服务:http://域名或者ip地址/站点里的路径
步骤1、挂载光盘(/dev/sr0或/dev/cdrom都可以,/dev/cdrom是/dev/sr0的软链接)
[root@localhost ~]# mount /dev/sr0 /mnt//将光盘挂载到/mnt目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# df -Th//查看挂载是否成功
文件系统类型容量已用可用 已用% 挂载点
/dev/mapper/centos-root xfs10G4.0G6.1G40% /
devtmpfsdevtmpfs897M0897M0% /dev
tmpfstmpfs912M0912M0% /dev/shm
tmpfstmpfs912M9.1M903M1% /run
tmpfstmpfs912M0912M0% /sys/fs/cgroup
/dev/sdb5xfs2.0G33M2.0G2% /data/bb
/dev/sda1xfs1014M179M836M18% /boot
/dev/sdb1xfs10G33M10G1% /data/aa
/dev/mapper/vg01-lvmail xfs13G33M13G1% /data/mail
tmpfstmpfs183M12K183M1% /run/user/42
tmpfstmpfs183M0183M0% /run/user/0
/dev/sr0iso96604.3G4.3G0100% /mnt
注意:mount命令是一次性挂载,退出当前终端或重启后就不存在了。永久挂载需要修改配置文件/etc/fstab。
文章图片
步骤2、切换到 /etc/yum.repo.d/目录,将自带的仓库文件移走。
[root@localhost ~]# cd /etc/yum.repos.d///切换至/etc/yum.repos.d/目录
[root@localhost yum.repos.d]# ls
CentOS-Base.repoCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo
CentOS-CR.repoCentOS-fasttrack.repoCentOS-Sources.repo
[root@localhost yum.repos.d]# mkdir aaa//创建一个名为aaa的新目录
[root@localhost yum.repos.d]# mv *.repo aaa//将yum仓库中以.repo结尾的文件移动到aaa中
[root@localhost yum.repos.d]# ls
aaa
文章图片
步骤3、新建yum仓库文件。
[root@localhost yum.repos.d]# vim yuji.repo//新建yum仓库文件
[yuji]
name=yuji#设置名称
baseurl=file:///mnt#设置链接地址,file://是固定格式,指向/mnt
enabled=1#开启此yum源
gpgcheck=0#无需验证公钥
文章图片
步骤4、清理缓存并安装软件。
[root@localhost yum.repos.d]# yum clean all//清理yum缓存
[root@localhost yum.repos.d]# yum makecache//重新建立元数据
[root@localhost yum.repos.d]# yum list//查看可安装的软件列表
[root@localhost yum.repos.d]# yum install dhcp -y//yum安装dhcp测试是否成功
文章图片
4.2 搭建阿里云仓库(http方式外网环境)默认的仓库文件是国外云仓库,速度比较慢,可以使用阿里云仓库代替。
操作步骤:
步骤1、切换到 /etc/yum.repo.d/目录,将自带的仓库文件移走。
[root@localhost ~]# cd /etc/yum.repos.d///切换至/etc/yum.repos.d/目录
[root@localhost yum.repos.d]# mkdir aaa
[root@localhost yum.repos.d]# mv *.repo aaa//将yum仓库中以.repo结尾的文件移动到aaa中
[root@localhost yum.repos.d]# ls
aaa
步骤2、新建阿里云仓库。
[root@localhost yum.repos.d]# vim ali.repo
[ali]
name=aliyun
#baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64///开启哪个版本都可以正常使用,这边主要解释变量的作用
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=0
?
[epel]//epel源仓库
name=epel
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
gpgcheck=0
?
[update]//更新包仓库
name=update
baseurl=https://mirrors.aliyun.com/centos/7/updates/x86_64/
gpgcheck=0
步骤3、清理缓存并安装软件。
[root@localhost yum.repos.d]# yum clean all//清理yum缓存
[root@localhost yum.repos.d]# yum makecache//重新建立元数据
[root@localhost yum.repos.d]# yum list//查看可安装的软件列表
[root@localhost yum.repos.d]# yum install tree -y//yum安装tree测试是否成功
4.3 http方式搭建云仓库http方式搭建云仓库,在外网和内网的环境下都可以使用,但多用于内网。
服务端:192.168.72.10
客户端:192.168.72.129
搭建步骤:
步骤1、服务端安装hhtpd服务程序。
[root@localhost ~]# yum install httpd -y
文章图片
步骤2、服务端切换到/var/www/html/ 目录,新建子目录centos7,并将光驱挂载到centos7目录下(也可以将光驱中的所有软件包拷贝到该目录下)。
[root@localhost ~]# cd /var/www/html//切换目录
[root@localhost html]# ls
[root@localhost html]# mkdir centos7//新建目录centos7
[root@localhost html]# mount /dev/sr0 ./centos7//将光驱挂载到centos7目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost html]# ls ./centos7
CentOS_BuildTagGPLLiveOSRPM-GPG-KEY-CentOS-7
EFIimagesPackagesRPM-GPG-KEY-CentOS-Testing-7
EULAisolinuxrepodataTRANS.TBL
文章图片
步骤3、服务端关闭防火墙和selinux,启动httpd服务。
[root@localhost html]# systemctl stop firewalld
[root@localhost html]# setenforce 0
setenforce: SELinux is disabled
[root@localhost html]# systemctl start httpd
文章图片
步骤4、客户端切换到/etc/yum.repos.d/目录,新建文件夹,将默认的yum仓库文件移动到该目录下。编写新的仓库文件
[root@192 ~]# cd /etc/yum.repos.d//客户端切换目录
[root@192 yum.repos.d]# ls
CentOS-Base.repoCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo
CentOS-CR.repoCentOS-fasttrack.repoCentOS-Sources.repo
[root@192 yum.repos.d]# mkdir bak//新建文件夹
[root@192 yum.repos.d]# mv *.repo bak//将默认的仓库文件移动到该文件夹下
[root@192 yum.repos.d]# ls
bak
[root@192 yum.repos.d]# vim http.repo//编写新的仓库文件
[http]
name=http
baseurl=http://192.168.72.10/centos7
enabled=1
gpgcheck=0
文章图片
文章图片
步骤5、清理yum缓存,重新建立元数据。并测试使用yum能否成功安装软件包。
[root@192 yum.repos.d]# yum clean all &
&
yum makecache
已加载插件:fastestmirror, langpacks
正在清理软件源: ftp
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
已加载插件:fastestmirror, langpacks
ftp| 3.6 kB00:00:00
(1/4): ftp/group_gz| 156 kB00:00:00
(2/4): ftp/primary_db| 3.1 MB00:00:00
(3/4): ftp/other_db| 1.2 MB00:00:00
(4/4): ftp/filelists_db| 3.1 MB00:00:00
Determining fastest mirrors
元数据缓存已建立
?
[root@192 yum.repos.d]# yum install ftp -y//测试yum安装,可以成功安装。
文章图片
文章图片
4.4 ftp方式搭建云仓库ftp方式搭建云仓库,在外网和内网的环境下都可以使用,但多用于内网。
服务端:192.168.72.10
客户端:192.168.72.129
搭建步骤:
步骤1、服务端安装vsftpd服务程序。
[root@localhost html]# yum install vsftpd -y
文章图片
步骤2、服务端切换到 /var/ftp/ 目录下新建一个子目录centos,并将光驱挂载到centos目录下(也可以将光驱内的所有文件包复制到centos目录下)。
[root@localhost html]# cd /var/ftp//切换到/ftp/var/目录
[root@localhost ftp]# ls
pub
[root@localhost ftp]# mkdir centos//创建centos目录
[root@localhost ftp]#
[root@localhost ftp]# mount /dev/sr0 ./centos//将光驱挂载到centos目录下
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ftp]# ls ./centos
CentOS_BuildTagGPLLiveOSRPM-GPG-KEY-CentOS-7
EFIimagesPackagesRPM-GPG-KEY-CentOS-Testing-7
EULAisolinuxrepodataTRANS.TBL
文章图片
步骤3、服务端开启vsftpd服务,关闭防火墙和selinux。
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
文章图片
步骤4、客户端安装ftp程序,测试ftp服务是否正常。
[root@192 ~]# yum install ftp -y//安装ftp程序
?
[root@192 ~]# ftp 192.168.72.10//测试ftp服务能否正常访问服务端
Connected to 192.168.72.10 (192.168.72.10).
220 (vsFTPd 3.0.2)
Name (192.168.72.10:root): ftp
331 Please specify the password.
Password:
230 Login successful.//可以正常访问
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ls
227 Entering Passive Mode (192,168,72,10,85,22).
150 Here comes the directory listing.
drwxr-xr-x8 002048 Sep 052017 centos
drwxr-xr-x2 006 Jun 092021 pub
226 Directory send OK.
ftp>
bye
221 Goodbye.
文章图片
步骤5、客户端编写yum仓库文件。
[root@192 ~]# cd /etc/yum.repos.d//切换目录
[root@192 yum.repos.d]# ls
bak2CentOS-Debuginfo.repoCentOS-Sources.repo
CentOS-Base.repoCentOS-fasttrack.repoCentOS-Vault.repo
CentOS-CR.repoCentOS-Media.repo
[root@192 yum.repos.d]# mkdir bak1//新建文件夹
[root@192 yum.repos.d]# mv *.repo bak1//将默认的仓库文件移动到该目录下
[root@192 yum.repos.d]# ls
bak1bak2
[root@192 yum.repos.d]# vim ftp.repo//编写新的仓库文件
[ftp]
name=ftp
baseurl=ftp://192.168.72.10/centos//路径指向服务端的/var/ftp/centos/目录
enabled=1
gpgcheck=0
文章图片
文章图片
步骤6、清理yum缓存,重新建立元数据。并测试使用yum能否成功安装软件包。
[root@192 yum.repos.d]# yum clean all &
&
yum makecache
已加载插件:fastestmirror, langpacks
正在清理软件源: ftp
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
已加载插件:fastestmirror, langpacks
ftp| 3.6 kB00:00:00
(1/4): ftp/group_gz| 156 kB00:00:00
(2/4): ftp/primary_db| 3.1 MB00:00:00
(3/4): ftp/other_db| 1.2 MB00:00:00
(4/4): ftp/filelists_db| 3.1 MB00:00:00
Determining fastest mirrors
元数据缓存已建立
?
[root@192 yum.repos.d]# yum install httpd -y//测试yum安装,可以成功安装。
文章图片
文章图片
4.5 搭建本地epel源仓库本地epel源仓库的应用场景:
- 在可以连外网的情况下,可以使用国外源或阿里云仓库等。
- 但实际工作中,公司内网常常无法连接外网,这时可以提前搭建本地epel源仓库,即在一台可连通外网的服务器中提前下载好epel源的所有软件包,编写好仓库文件后,在离线的情况下也可以使用yum安装软件包。
- 之后其他主机可以通过http方式或ftp方式使用服务端的epel源仓库。
步骤1、安装epel源,并下载epel源的所有软件包。
[root@localhost ~]# yum install epel-release//安装epel源
[root@localhost ~]# mkdir centos7//新建centos7目录
[root@localhost ~]# reposync -r epel -p /centos7/ &
//下载同步epel源软件包,下载到/centos7/目录下,&
表示放到后台下载
[root@localhost ~]# ls /centos7
epel
步骤2、安装createrepo命令(建立元数据的命令),之后使用createrepo命令建立元数据。
[root@localhost ~]# yum -y install createrepo//安装createrepo命令
[root@localhost ~]# createrepo -v /centos7/epel//建立元数据(软件目录、依赖关系)
[root@localhost ~]# cd/centos7/epel//切换到centos7/epel 目录下
[root@localhost epel]# ls//查看软件包和元数据
Packagesrepodata
步骤3、切换到/etc/yum.repos.d目录,移走默认仓库文件,编写新的仓库文件。
[root@localhost ~]# cd /etc/yum.repos.d///切换至/etc/yum.repos.d/目录
[root@localhost yum.repos.d]# ls
CentOS-Base.repoCentOS-Debuginfo.repoCentOS-Media.repoCentOS-Vault.repo
CentOS-CR.repoCentOS-fasttrack.repoCentOS-Sources.repo
[root@localhost yum.repos.d]# mkdir aaa//创建一个名为aaa的新目录
[root@localhost yum.repos.d]# mv *.repo aaa//将yum仓库中以.repo结尾的文件移动到aaa中
[root@localhost yum.repos.d]# ls
aaa
[root@localhost yum.repos.d]# vim epellocal.repo//新建yum仓库文件
[epellocal]
name=epellocal#设置名称
baseurl=file:///centos7/epel#设置链接地址,路径指向/centos7/epel目录
enabled=1#开启此yum源
gpgcheck=0#无需验证公钥
其他主机如果想使用这台机器中的epel仓库,可以在本地使用http或ftp方式搭建:
baseurl=http://192.168.72.10/centos7/epel//http方式
?
baseurl=ftp://192.168.72.10/centos7/epel//ftp方式
5 小贴士 5.1 使用命令方式生成仓库文件以上四种方式都是都是通过手动编写yum仓库文件来配置,也可以直接通过命令来搭建。
命令的方式配置原理和上面的文件配置原理一样,都是写入
/etc/yum.repos.d
中,只是命令行是自动生成仓库文件 。1、外网环境搭建
命令格式:
wget -O/etc/yum.repos.d/name.repo(自定义以repo结尾的文件名)源路径
wget 命令配置阿里云仓库:
wget -O/etc/yum.repos.d/Centos-7.repohttp://mirrors.aliyun.com/repo/Centos-7.repo
2、内网环境搭建
命令格式:
yum-config-manager --add-repo=file://
yum-config-manager --add-repo=ftp://
示例:
yum-config-manager --add-repo=file:///mnt//使用本地源
yum-config-manager --add-repo=ftp://192.168.72.10/centos7//ftp方式搭建
5.2 下载依赖包到本地(但不安装)当内网的一台主机安装某个软件包却缺少依赖包时,可以先由一台可连接外网的服务器下载依赖包,之后共享给这台主机。
这时可以使用“yum install --downloadonly”命令,该命令可以仅下载所需软件及其依赖包、而不安装软件,大大减少了无外网安装时找依赖包的问题。命令格式如下:
yum install --downloadonly +软件名称 --downloaddir=指定rpm包存放路径
例如,下载nginx所需要的依赖包到/mnt/nginx目录内:
yum install nginx --downloadonly --downloaddir=/mnt/nginx
【Linux网络服务之部署YUM仓库】本文转自:https://juejin.cn/post/7078172295302217735
推荐阅读
- 一种基于知识图谱与内容的推荐算法
- 自动化运维工具之ansible
- PCBLayout跳坑指南——PCB走线角度选择到底该不该90°()
- Spring MVC +Spring 框架学习总结-全网最好用的学习笔记
- #yyds干货盘点#golang实现通过mysql语句实现分页查询
- 初学者都能学会的ElasticSearch入门实战
- OpenPlayers3 关于大数据矢量加载
- #yyds干货盘点# 一步步教你用taro封装一个公司库的下拉组件
- 如何使用物联网低代码平台进行工作表管理()