何为Yum?
Yum是一个shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包。
为何需要搭建Yum?
在不需要访问互联网的前提下,也可在内网运维大量Linux服务器,快速安装升级,降本增效。其次,减轻运维工作量。应用开发人员在其业务服务器上直接添加Yum配置文件即可直接安装所需要的资源包...再一次当个"甩手运维"。(Ps:还是给自己多留点运维开发的时间吧...)
如何搭建内网Yum仓库?
有2个事情需要解决:服务端搭建与客户端配置。
本例以Centod7.6系统为例,服务端IP地址为A,客户端IP地址为B。
一、在服务端上:需要创建Yum仓库,通过配置WEB服务器或FTP服务器来把Yum仓库分享给局域网内其它Linux机器使用。
(1)环境准备
代码语言:javascript复制1. 关闭selinux
sestatus
vi /etc/selinus/config #SELINUX 修改为 disabled, 需重启机器才生效
2. 关闭防火墙
firewall-cmd --state
systemctl stop firewalld #停止firewall
systemctl disable firewalld #禁用 firewall 开机启动
(2)导入rpm包,生成索引文件。
代码语言:javascript复制在本例中,以镜像包的方式导入rpm包。
1. 挂载磁盘镜像/epel镜像
mkdir -p /media/cdrom
mkdir -p /media/cdrom-epel
mount -o loop -t iso9660 /home/bk_offline_repo-7.5.1804.iso /media/cdrom-epel
mount -o loop -t iso9660 /home/CentOS-7-x86_64-DVD-1810.iso /media/cdrom
2. 复制rpm包至/xtkyum/Packages
cd /media/cdrom
cp -R Packages/ /xtkyum/
unalias cp
cd /media/cdrom-epel
cp -rf *.rpm /xtkyum/Packages/
alias cp='cp -i'
3. 按照先后顺序执行以下命令,不然会报错缺少依赖包。
rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh libxml2-2.9.1-6.el7_2.3.x86_64.rpm
rpm -ivh libxml2-python-2.9.1-6.el7_2.3.x86_64.rpm
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm #createrepo主要是为后续生成仓库数据使用
4. 创建仓库数据,建立索引
createrepo -v /xtkyum #运行完成后会生成repodata文件夹
5. 在/etc/yum.repos.d/目录下创建一个名为 local.repo文件,其中包含所有的yum信息
原目录下的文件备份至其它位置,如yum.repos.d.bak
vi /etc/yum.repos.d/local.repo
[localrepo] #注意,该地方不能有空格,不然后续执行 yum repolist all时会报错repolist:0
name=local-yum
baseurl=file:///xtkyum # file://告诉yum为本地仓库,/xtkyum为绝对路径
enabled=1
gpgcheck=0 #关闭rpm包的gpg校验功能;个人环境,建议关闭,参数值为0;生产环境,建议打开,参数值为1。
保存退出。
6. yum clean all #清理缓存
yum repolist all #检查仓库列表,在列表中能看到localrepo
7. 测试能否成功安装。
yum -y install gcc
yum -y install ntp
(3)配置web或http分享yum仓库。
代码语言:javascript复制>>>使用ftp服务器(vsftpd)分享yum仓库
1. yum -y install vsftpd
2. 把yum仓库下的文件拷贝到vsftpd的默认根目录 /var/ftp/pub,包括repodate
cd /xtkyum
cp -R Packages /var/ftp/pub
cp -R repodate /var/ftp/pub
chmod 755 -R /var/ftp/pub
3. systemctl restart vsftpd
systemctl status vsftpd
>>>使用web服务器(apache)分享yum仓库
1. yum -y install httpd
2. 把yum仓库下的文件拷贝到默认根目录 /var/www/html/,包括repodate
cd /xtkyum
cp -R Packages /var/www/html
cp -R repodate /var/www/html
chmod 755 -R /var/www/html
3. systemctl restart httpd
systemctl status httpd
二、在客户端上:创建repo配置文件,测试yum仓库是否能正常使用。
代码语言:javascript复制1. 在/etc/yum.repos.d/目录下创建一个名为 local.repo文件,其中包含所有的yum信息
原目录下的文件备份至其它位置,如yum.repos.d.bak
2. vi local.repo (ftp)
[localrepo]
name=localyum
baseurl=ftp://服务器ip地址A/pub/
enabled=1
gpgcheck=0
保存后退出
>>>如果是web服务器,baseurl修改成:baseurl=http://服务器IP地址A
写在最后
也是在实际工作中发现的现有运维痛点,才尝试搭建局域网yum仓库。当然了,yum仓库里的rpm包就准备在后续工作中不断的更新迭代啦。注:每更新一次rpm包,就需要重新生成repodata索引文件,执行yum install的时候才会自动解决依赖包关系。