制作本地(局域)yum仓库
前言
我们为什么要制作本地的yum源呢?
如何制作?
首先简单了解一下yum工具:
yum工具是基于rpm的,最重要的特性就是可以自动解决以来关系。
yum的本质是:把xxx.rpm
的包下载到本地,然后在进行安装。但是在执行yum install xxx
安装完成之后就会自动删除rpm包。
在做实验或生产环境中无法连接外网的情况下,安装某些软件就会变得很复杂,还需要安装依赖包。
比如当安装比较大的服务的适合,如安装MySQL,文件很大,当搭建MySQL集群的适合,就需要每台机器都去重新下载在安装,是很浪费实践的。
所以,在某些情况下,就有必要自己搭建一个局域网或测试环境的本地yum源,来提供内部访问,我们知道,局域网的传输速度是很快的。
有了这样的需求,如果制作?:
- 1.首先我们需要有rpm包,并下载到本地。
- 2.有包了,需要生成yum仓库数据文件信息,记录这些数据
- 3.需要存在一个提供局域网其他机器访问的服务,可以是http或者ftp
- 4.当上面都有了,就可以进行测试
- 5.完成后,还需要对本地仓库进行自动更新
多说一句:不要觉得第一步很麻烦,这是必要的,一台机器下载总比每台机器都要下载速度来的快多了。
下面开始进行具体的实施
一.下载rpm包到本地
使用阿里云的镜像仓库来同步到本地。
1.使用reposync来进行同步阿里云镜像
vim /etc/yum.repos.d/aliyun.repo # 配置阿里云yum源 [Aliyun] name=Aliyun baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/ gpgcheck=0 enabled=1 yum repolist # 来查看各镜像的repo id mkdir /yum # 本地仓库目录 reposync -r "$repoid" -p /yum # $repoid就是镜像的id
此时,就将镜像仓库下载到了本地。同步速度与网速有关。
2.可以只把需要的rpm包下载到本地
使用yum命令加上参数
--downloadonly:只下载
--downloaddor:指定下载目录
yum install --downloadonly --downloaddir=/yum/ mysql-community-server
此时,就将MySQL的相关安装包和依赖包下载到了/yum/
目录。
完成上面的步骤,第一步本地rpm包准备好了
二:生成yum仓库数据文件信息(repodate信息)
1.createrepo生成repodate信息
没有生成仓库数据信息,在使用yum的时候会报错,使用仓库需要有repomd.xml这个文件。repomd.xml
:文件就是仓库rpm包的索引信息。
使用createrepo生成即可,默认是没有这个命令的。
yum install createrepo -y # 安装createrepo createrepo /yum/ # 生成repomd.xml文件 # 使用完成后会在/yum/目录里面生成repodate,这个文件里面存放的就是仓库的各项信息
2.检查本地仓库信息是否正常
1): 配置本地yum仓库
vim /etc/yum.repos.d/local.repo [local] name=local repository baseurl=file:///yum enabled=1 gpgcheck=0
2): 检查本地仓库信息
yum repoinfo local # 这里的local可以是Repo-id,也可以是Repo-name # Repo-id :配置文件[]里面的内容 # Repo-name :配置文件name的字段 # 输出正常表示可以进行正常使用
三:配置HTTP服务,提供局域网下载
上面的步骤完成,只能在本地使用的,当局域网机器也需要使用肯定不满足。
本地安装HTTP服务:
yum -y install nginx getenforce # 当为enforcing时,可以使用下面的命令,不是可以忽略。 setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config systemctl status firewalld # 状态为running时,建议关闭 systemctl stop firewalld systemctl disable firewalld ## 在进行配置文件,将配置文件里面的root设置为自己的yum仓库地址 下面粘贴一下自己Nginx的配置: server { listen 80; listen [::]:80 default; server_name www.repo.com; root /yum; location / { autoindex on; autoindex_exact_size off; autoindex_localtime on; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } # 启动服务 nginx -t systemctl start nginx systemctl enable nginx
提示: 可以将本地仓库防止在Nginx的默认网页目录下 /usr/share/nginx/html
当使用Nginx作为web服务时,需要有Nginx的yum包或者源码包。
可以参考连接 LNMP环境搭建
四:测试局域网其他机器是否能够访问
创建repo文件:
vim /etc/yum.repos.d/local.repo [loacl] name=local repository baseurl=http://www.repo.com gpgcheck=0 enabled=1 # 修改host vim /etc/hosts $ipaddress www.repo.com yum repolist # 查看local是否有包
当local包之后,说明局域yum搭建成功。
五:本地yum仓库更新
当本地仓库有其他包加入或者同步网络yum源的时候有变动,就需要更新本地yum仓库
更新yum仓库
reposync -r "$repoid" -p /yum # $repoid就是镜像的id,同步并更新 createrepo --update /yum # 更新repodate信息 yum clean all && yum repolist # 清除缓存
局域网其他机器重新生成yum缓存
yum clean all && yum repolist
可以在本地机器写脚本来自定更新检查
1.本地仓库自动执行更新脚本
vim /root/yum-update.sh #!/bin/bash datetime=`date +"%Y-%m-%d %H:%M:%S"` reposync -d -r "$repoid" -p /yum # 请将这里的$repoid换成镜像的id if [[ $? -eq 0 ]];then createrepo --update /repo/CentOS/7/os/x86_64/ echo "SUCCESS:$datetime epel update YES" else echo "ERROR: $datetime epel Updatem NO" fi # 创建一个自动执行任务 crontab -e 0 3 * * * 3 /bin/bash /root/yum-update.sh crontab -l # 查看计划任务是否存在
2.局域网客户端重新创建缓存
vim /root/yum-update.sh #!/bin/bash yum clean all yum repolist crontab -e 0 4 * * * 3 /bin/bash /root/yum-update.sh crontab -l
总结
为此,本地yum仓库搭建完成。
并不复杂,望能帮助到大家。
可以了解yum仓库操作的更多知识。
来源:https://www.cnblogs.com/moniter/p/12305169.html