在CentOS 7上设置本地HTTP Yum存储库

设置本地存储库的一个优点是不需要互联网连接来安装软件包。

本文将介绍如何在CentOS 7上通过HTTP (Nginx) web服务器设置本地Yum存储库,并说明如何在CentOS 7客户端机器上查找和安装软件包。

环境说明

Yum HTTP存储库服务器: CentOS 7 [192.168.195.185]

客户端机器: CentOS 7 [192.168.195.186]

步骤1:安装Nginx Web Server

1.使用YUM包管理器从EPEL存储库安装Nginx HTTP服务器,如下所示。

# yum install epel-release

# yum install nginx

2.启动Nginx,并使它在系统启动时自动启动。

# systemctl start nginx

# systemctl enable nginx

# systemctl status nginx

3.打开端口80和443以允许web流量到Nginx服务

# firewall-cmd –zone=public –permanent –add-service=http

# firewall-cmd –zone=public –permanent –add-service=https

# firewall-cmd –reload

4.确认Nginx服务器已经启动并运行,使用以下URL能看到默认的Nginx网页。

http://SERVER_DOMAIN_NAME_OR_IP

步骤2:创建Yum本地存储库

5.安装创建、配置和管理本地存储库所需的软件包。

# yum install createrepo  yum-utils

6.创建必要的目录(yum存储库),用于存储包和任何相关信息。

# mkdir -p /var/www/html/repos/{base,centosplus,extras,updates}

7.使用reposync工具将CentOS YUM存储库同步到本地目录,如图所示。

# reposync -g -l -d -m –repoid=base –newest-only –download-metadata –download_path=/var/www/html/repos/

# reposync -g -l -d -m –repoid=centosplus –newest-only –download-metadata –download_path=/var/www/html/repos/

# reposync -g -l -d -m –repoid=extras –newest-only –download-metadata –download_path=/var/www/html/repos/

# reposync -g -l -d -m –repoid=updates –newest-only –download-metadata –download_path=/var/www/html/repos/

上述命令选项含义:

  • -g –启用删除下载后未通过GPG签名检查的软件包
  • -l –启用yum插件支持
  • -d –允许删除存储库中不再存在的本地包
  • -m –允许下载comps.xml文件
  • –repoid –指定存储库ID
  • –newest-only –告诉reposync只拉取repos中每个包的最新版本
  • –download-metadata –启用下载所有非默认元数据
  • –download_path –指定下载软件包的路径

8.检查本地目录的内容,以确保所有包都已在本地同步

# ls -l /var/www/html/repos/base/

# ls -l /var/www/html/repos/base/Packages/

# ls -l /var/www/html/repos/centosplus/

# ls -l /var/www/html/repos/centosplus/Packages/

# ls -l /var/www/html/repos/extras/

# ls -l /var/www/html/repos/extras/Packages/

# ls -l /var/www/html/repos/updates/

# ls -l /var/www/html/repos/updates/Packages/

9.运行以下命令为本地存储库创建一个新的repodata

# createrepo /var/www/html/repos/base/ 

# createrepo /var/www/html/repos/centosplus/   

# createrepo /var/www/html/repos/extras/ 

# createrepo -g comps.xml /var/www/html/repos/updates/ 

10. 为了能够通过web浏览器查看存储库和其中的包,创建一个指向存储库根目录的Nginx服务器配置文件。

# vim /etc/nginx/conf.d/repos.conf

将以下配置添加到repos .conf文件中。

server {

        listen   80;

        server_name  repos.test.lab;    #change  test.lab to your real domain

        root   /var/www/html/repos;

        location / {

                index  index.php index.html index.htm;

                autoindex on;   #enable listing of directory index

        }

}

保存文件并关闭它。

11.重新启动Nginx服务器,并使用以下URL从web浏览器查看存储库。

http://repos.test.lab

步骤3:创建一个Cron作业来同步和创建存储库

12.添加一个cron作业,它将自动同步本地repos与官方CentOS repos,以获取更新和安全补丁。

# vim /etc/cron.daily/update-localrepos

将这些命令添加到脚本中。

#!/bin/bash

##specify all local repositories in a single variable

LOCAL_REPOS=”base centosplus extras updates”

##a loop to update repos one at a time

for REPO in ${LOCAL_REPOS}; do

reposync -g -l -d -m –repoid=$REPO –newest-only –download-metadata –download_path=/var/www/html/repos/

createrepo /var/www/html/repos/$REPO/ 

done

保存脚本并关闭它,并为其设置适当的权限。

# chmod 755 /etc/cron.daily/update-localrepos

步骤4:在客户端机器上设置本地Yum存储库

13. 在CentOS客户机上,将您的本地repos添加到YUM配置中。

# vim /etc/yum.repos.d/local-repos.repo

将下面的配置复制并粘贴到local-repos文件中。(在必要时进行更改)。

[local-base]

name=CentOS Base

baseurl=http://repos.test.lab/base/

gpgcheck=0

enabled=1

[local-centosplus]

name=CentOS CentOSPlus

baseurl=http://repos.test.lab/centosplus/

gpgcheck=0

enabled=1

[local-extras]

name=CentOS Extras

baseurl=http://repos.test.lab/extras/

gpgcheck=0

enabled=1

[local-updates]

name=CentOS Updates

baseurl=http://repos.test.lab/updates/

gpgcheck=0

enabled=1

保存文件并开始使用本地YUM镜像。

14.运行以下命令在客户端机器上的可用YUM repos列表中查看本地repos。

#  yum repolist

OR

# yum repolist all

安装包:yum -y install bzip2-devel