CentOS7 自建YUM源仓库配置

  • CentOS7 自建YUM源仓库配置
  • 1.YUM本地源搭建
  • 1.1挂载镜像文件
  • 1.2 本地repo文件配置
  • 1.3 检验yum仓库搭建
  • 2 YUM网络源搭建
  • 2.1 搭建httpd服务
  • 2.2 客户端服务器修改repo文件
  • 2.3 检验客户端YUM源搭建
  • 3 YUM自建源搭建
  • 3.1 自己制作rpm包,并放进某个目录
  • 3.2 创建可用的yum源文件
  • 3.3 修改客户端服务器repo文件
  • 3.4 可能出现的问题
  • 参考资料


CentOS7 自建YUM源仓库配置

在没有外网的环境下,YUM无法直接使用,因此可以在一台服务器上搭建临时YUM源,供整个服务器群使用。

1.YUM本地源搭建

1.1挂载镜像文件

CentOS 8设置基础软件仓库出错 centos7yum仓库配置_html

在操作系统的ISO文件中,有许多RPM包,我们可以通过挂载操作系统镜像文件到本地目录的方式来搭建本地源。

首先在/var/www/html目录下创建一个centos7,把ISO文件以iso9660的形式挂载到该目录,因为之后网络源httpd的默认发布地址是在/var/www/html目录下。这里是虚拟机环境,所以文件是在/dev/sr0下,如果不是虚拟机,换成/dev/cdrom。

mkdir /var/www/html/centos7
mount -t iso9660 /dev/sr0 /var/www/html/centos7 
ll /var/www/html/centos7                           #查看挂载的文件

1.2 本地repo文件配置

为了能在本地使用yum获取操作系统镜像中的RPM包,需要修改本地repo文件配置。
首先禁用所有源,即把/etc/yum.repo.d/里的repo文件加上bak。

cd /etc/yum.repo.d/
mv CentOS-Base.repo{,.bak}

再自己写一个repo文件 vi my_yum.repo,添加如下片段

[my_yum]              #仓库名,必须和my_yum.repo的前半部分一样
name=centos7          #描述信息
baseurl=file:///var/www/html/centos7  #yum源访问地址,可以用http/ftp/file,本地repo格式为file://+yum本地源目录。 
enabled=1             #启用仓库
gpgcheck=0            #不检查标签

1.3 检验yum仓库搭建

yum repolist

查看repo源中rpm包的个数。

2 YUM网络源搭建

通过1搭建好YUM本地源后,我们就可以通过Httpd服务发布,这样内网里别的服务器就可以访问到了。

2.1 搭建httpd服务

yum install httpd
service httpd start  #启动httpd服务

检验是否开启成功可以打开浏览器,输入ip地址,如果可以看见欢迎界面,则成功。

此时输入 http://ip地址/centos7,可以看见如下目录

CentOS 8设置基础软件仓库出错 centos7yum仓库配置_centos_02


如果此时,内网别的服务器输入 http://ip地址/centos7无法访问,可能是由于发布的服务器防火墙没关。

systemctl stop firewalld.service    #关闭防火墙
service httpd restart               #重启httpd

2.2 客户端服务器修改repo文件

此时,其他的服务器YUM的访问地址还没有修改,此时无法使用YUM获得ISO文件中的RPM包。
因此我们需要修改其他服务器上的repo文件。

和1.2一样,首先禁用其他服务器上的所有源,再自己添加一个repo文件,此时baseurl地址为http://ip/centos7格式,内容如下所示:

[my_yum]              #仓库名,必须和my_yum.repo的前半部分一样
name=centos7          #描述信息
baseurl=http://ip地址/centos7  #yum源访问地址,可以用http/ftp/file,网络地址格式http://ip/centos7
enabled=1             #启用仓库
gpgcheck=0            #不检查标签

2.3 检验客户端YUM源搭建

yum repolist

此时在内网的其他服务器上可以看见镜像文件上RPM包的个数,并可以使用YUM 。

3 YUM自建源搭建

在搭建完本地源和网络源后,我们内网中的其他机器可以使用YUM获取镜像文件里的RPM包,那么如果我们自己打包了一个RPM包,也想分享给其他机器,此时需要自建一个源仓库。

3.1 自己制作rpm包,并放进某个目录

mkdir /media/repo1        #rpm包全部放进这里

3.2 创建可用的yum源文件

这里需要使用createrepo工具。

yum install createrepo    #安装createrepo
createrepo -pdo /media/repo1 /media/repo1   #创建可用的yum源文件

此时/media/repo1下会生成repodata文件夹,内容如下:

CentOS 8设置基础软件仓库出错 centos7yum仓库配置_yum_03


此时,如果更新了新的rpm包,可以添加如下代码:

createrepo --update -v /media/repo1  #该目录添加或者删除rpm包。可以update更新索引,不必重新生成

然后把该目录复制到/var/www/html/repo1下

mkdir /var/www/html/repo1
cp -a /media/repo1 /var/www/html/repo1

此时,访问 http://ip地址/repo1,可以看见制作的rpm包和repodata文件

CentOS 8设置基础软件仓库出错 centos7yum仓库配置_linux_04

3.3 修改客户端服务器repo文件

这里和之前2.2基本一样,只是修改baseurl地址为http://ip/centos7为http://ip/repo1格式

,如下所示,图中是为了方便直接修改的CentOS-Media.repo文件:

CentOS 8设置基础软件仓库出错 centos7yum仓库配置_yum_05


修改完成后,再

yum repolist
yum clean all

如果此时可以通过yum 安装自建源中的rpm包,则成功,如下所示:

CentOS 8设置基础软件仓库出错 centos7yum仓库配置_CentOS 8设置基础软件仓库出错_06


虽然我此时没有成功。

3.4 可能出现的问题

既然没有成功,那就开始找问题。我的客户端服务器再yum install 的时候出现了 403 Forbidden的问题,此时打开http://ip/repo1/repodata,发现里面没有东西。
而在发布自建源的服务器上,打开http://ip/repo1/repodata,里面依然没有东西;然而再/var/www/html/repo1/repodata下面,是有repomd.xml这个文件的。

查阅资料后发现,是由于http访问权限问题导致,需要修改SELinux策略

chcon -R -t httpd_sys_content_t /var/www/html

chcon命令用于修改文件的SELinux安全上下文,-R用于递归修改,-t httpd_sys_content_t 用于为网站目录开放httpd访问权限。