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服务器上创建 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_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
本地仓库类型:
- 光盘的仓库(基本仓库)
- epel 扩展仓库
1.3 如何实现安装服务
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.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-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地址/站点里的路径
4.1 搭建本地yum仓库
搭建步骤:
步骤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 xfs 10G 4.0G 6.1G 40% /
devtmpfs devtmpfs 897M 0 897M 0% /dev
tmpfs tmpfs 912M 0 912M 0% /dev/shm
tmpfs tmpfs 912M 9.1M 903M 1% /run
tmpfs tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/sdb5 xfs 2.0G 33M 2.0G 2% /data/bb
/dev/sda1 xfs 1014M 179M 836M 18% /boot
/dev/sdb1 xfs 10G 33M 10G 1% /data/aa
/dev/mapper/vg01-lvmail xfs 13G 33M 13G 1% /data/mail
tmpfs tmpfs 183M 12K 183M 1% /run/user/42
tmpfs tmpfs 183M 0 183M 0% /run/user/0
/dev/sr0 iso9660 4.3G 4.3G 0 100% /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.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-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_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.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.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-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 kB 00:00:00
(1/4): ftp/group_gz | 156 kB 00:00:00
(2/4): ftp/primary_db | 3.1 MB 00:00:00
(3/4): ftp/other_db | 1.2 MB 00:00:00
(4/4): ftp/filelists_db | 3.1 MB 00: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_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.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-x 8 0 0 2048 Sep 05 2017 centos
drwxr-xr-x 2 0 0 6 Jun 09 2021 pub
226 Directory send OK.
ftp> bye
221 Goodbye.
步骤5、客户端编写yum仓库文件。
[root@192 ~]# cd /etc/yum.repos.d //切换目录 [root@192 yum.repos.d]# ls
bak2 CentOS-Debuginfo.repo CentOS-Sources.repo
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo
[root@192 yum.repos.d]# mkdir bak1 //新建文件夹
[root@192 yum.repos.d]# mv *.repo bak1 //将默认的仓库文件移动到该目录下
[root@192 yum.repos.d]# ls
bak1 bak2
[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 kB 00:00:00
(1/4): ftp/group_gz | 156 kB 00:00:00
(2/4): ftp/primary_db | 3.1 MB 00:00:00
(3/4): ftp/other_db | 1.2 MB 00:00:00
(4/4): ftp/filelists_db | 3.1 MB 00: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 //查看软件包和元数据
Packages repodata
步骤3、切换到/etc/yum.repos.d目录,移走默认仓库文件,编写新的仓库文件。
[root@localhost ~]# cd /etc/yum.repos.d/ //切换至/etc/yum.repos.d/目录 [root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-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.repo http://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
本文转自:https://juejin.cn/post/7078172295302217735
以上是 Linux网络服务之部署YUM仓库 的全部内容, 来源链接: utcz.com/z/520278.html