局域网自建YUM仓库

简介: 在公司的局域网内自建一个yum仓库,对于不能连外网的环境非常有用。同时也提高了内网服务器的下载速度。

本文服务器IP:10.10.16.80

修改yum源为阿里源

rm -rf /etc/yum.repos.d/*
yum-config-manager --add-repo http://10.10.16.80/centos/alirepo/Centos-7.repo
yum-config-manager --add-repo http://10.10.16.80/centos/alirepo/epel-7.repo

创建缓存

yum clean all
yum makecache

安装相关软件

- yum-utils reposync同步工具

- createrepo 编辑yum库工具

yum install  wget gcc* createrepo yum-utils -y

命令详解

  • reposync命令详解

本文档,我们只用到了-p和-n,单独下载哪个yum源,使用-r --repoid

Options:
  -h, --help            显示此帮助消息并退出
  -c CONFIG, --config=CONFIG
                        要使用的配置文件(默认为/etc/yum.conf)
  -a ARCH, --arch=ARCH  像运行指定的arch一样(默认值:current
                        arch,注意:不会覆盖$ releasever。 x86_64是一个
                        i * 86的超集。)
  --source              在源包上运行
  -r REPOID, --repoid=REPOID
                        指定repo id来查询,可以指定多个次(默认全部启用)
  -e CACHEDIR, --cachedir=CACHEDIR 用于存储元数据的目录
  -t, --tempcache       使用临时目录存储/访问yum-cache
  -d, --delete          删除存储库中不再存在的本地包
  -p DESTDIR, --download_path=DESTDIR 下载包的路径:默认为当前目录
  --norepopath          不要将reponame添加到下载路径。只可以
                        在同步单个存储库时使用(默认为
                        添加reponame)
  -g, --gpgcheck        删除未通过GPG签名检查的软件包
  -u, --urls            只列出要下载的URL,不要下载
  -n, --newest-only     仅下载per-repo的最新软件包
  -q, --quiet           尽可能少地输出
  -l, --plugins         启用yum插件支持
  -m, --downloadcomps   下载comps.xml
  --download-metadata   下载所有非默认元数据
  --allow-path-traversal
                        允许存储在其repo目录之外的包
                        同步(UNSAFE,小心使用!)
  • createrepo命令详解

createrepo用以创建yum源(软件仓库),即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据。
基本语法:createrepo [option]

常用参数详解
    -u  --baseurl <url>
        指定Base URL的地址
    -o --outputdir <url>
        指定元数据的输出位置
    -x --excludes <packages>
        指定在形成元数据时需要排除的包
    -i --pkglist <filename>
        指定一个文件,该文件内的包信息将被包含在即将生成的元数据中,格式为每个包信息独占一行,不含通配符、正则,以及范围表达式。
    -n --includepkg
        通过命令行指定要纳入本地库中的包信息,需要提供URL或本地路径。
    -q --quiet
        安静模式执行操作,不输出任何信息。
    -g --groupfile <groupfile>
        指定本地软件仓库的组划分,范例如下:
     createrepo -g comps.xml /path/to/rpms
        注意:组文件需要和rpm包放置于同一路径下。
    -v --verbose
        输出详细信息。
    -c --cachedir <path>
       指定一个目录,用作存放软件仓库中软件包的校验和信息。当createrepo在未发生明显改变的相同仓库文件上持续多次运行时,指定cachedir会明显提高其性能。
    --update
        如果元数据已经存在,且软件仓库中只有部分软件发生了改变或增减,则可用update参数直接对原有元数据进行升级,效率比重新分析rpm包依赖并生成新的元数据要高很多。
    -p --pretty
        以整洁的格式输出xml文件。
    -d --database
        该选项指定使用SQLite来存储生成的元数据,默认项。

创建本地目录

我规划的目录为/mirror/centos/7

mkdir -p /mirror/centos/7
#同步所有yum源到本地目录
reposync -p /mirror/centos/7
#补充,如果后面增加了什么yum源,可单独更新,如,单独更新base
reposync -r base -p /mirror/centos/7
#注:系统自动创建相关目录,并下载,时间较长请耐心等待。可以用 -r --repoid=repoid指定要查询的repo id,可以指定多个更新新的rpm包

全部下载完成后,创建索引

createrepo -po /mirror/centos/7/base/ /mirror/centos/7/base/
createrepo -po /mirror/centos/7/extras/ /mirror/centos/7/extras/
createrepo -po /mirror/centos/7/updates/ /mirror/centos/7/updates/
createrepo -po /mirror/centos/7/epel/ /mirror/centos/7/updates/

以后更新,加上-n参数,只下载最新的软件包

reposync -np /mirror/centos/7

更新完成后,还需要更新索引

createrepo --update /mirror/centos/7/base
createrepo --update /mirror/centos/7/extras
createrepo --update /mirror/centos/7/updates
createrepo --update /mirror/centos/7/epel

创建定时任务脚本

先创建对应目录/var/log/hbgg_yumlog

脚本如下:

vim /opt/script/centos_yum_update.sh

#!/bin/bash
DATE=$(date +%F)
LogFile=/var/log/hbgg_yumlog/yumrepo_${DATE}.log
function log_error() {
    echo -e "\033[31m [ERROR] $@ \033[0m"
    echo "ERROR $@"  >> $LogFile
}
function log_info() {
    echo -e "\033[32m [INFO] $@ \033[0m"
    echo "INFO $@"  >> $LogFile
}
function log_warn() {
    echo -e "\033[33m [WARN] $@ \033[0m"
    echo "WARN $@"  >> $LogFile
}
log_info "${DATE} 正在同步..."
reposync -np /mirror/centos/7 &>/dev/null
if [ $? -eq 0 ];then
    createrepo --update /mirror/centos/7/base
    createrepo --update /mirror/centos/7/extras
    createrepo --update /mirror/centos/7/updates
    createrepo --update /mirror/centos/7/epel
    log_info "${DATE} aliyum_yum update successful"
else
    log_error "${DATE} aliyum_yum update failed"
fi

将脚本赋予执行权限,chmod +x,加入定时任务,crontab -e

0 0 * * 7 /opt/script/centos_yum_update.sh

安装nginx

安装nginx开启目录权限保证本地机器可以直接本地yum源

yum install nginx -y
#找到nginx配置文件,并参考下文修改nginx配置文件:
vim nginx.conf
    server {
        listen       80;
        server_name  localhost;
        root         /mirror;         # 这里是yum源存放目录      
        location / {
            autoindex on;               # 打开目录浏览功能
            autoindex_exact_size off;   # on、off:以可读的方式显示文件大小
            autoindex_localtime on;     # on、off:是否以服务器的文件时间作为显示的时间
            charset utf-8,gbk;          # 展示中文文件名
            index index.html;
        }
    }

客户端yum源

写法参考阿里源,基本一样,根据自己的目录结构自行调整。

[base]
name=CentOS-7-Base-hbgg
baseurl=http://10.10.16.80/centos/7/base/
gpgcheck=1
gpgkey=http://10.10.16.80/centos/RPM-GPG-KEY-CentOS-7

[updates]
name=CentOS-7-updates-hbgg
baseurl=http://10.10.16.80/centos/7/updates/
gpgcheck=1
gpgkey=http://10.10.16.80/centos/RPM-GPG-KEY-CentOS-7

[extras]
name=CentOS-7-extras-hbgg
baseurl=http://10.10.16.80/centos/7/extras/
gpgcheck=1
gpgkey=http://10.10.16.80/centos/RPM-GPG-KEY-CentOS-7

[epel]
name=CentOS-7-epel-hbgg
baseurl=http://10.10.16.80/centos/7/epel/
gpgcheck=1
gpgkey=http://10.10.16.80/centos/RPM-GPG-KEY-EPEL-7

完成。

目录
相关文章
|
6月前
|
缓存
详解CentOS8更换yum源后出现同步仓库缓存失败的问题
详解CentOS8更换yum源后出现同步仓库缓存失败的问题
358 0
|
Linux 应用服务中间件 nginx
CentOS7搭建yum源仓库(阿里源)
CentOS7搭建yum源仓库(阿里源)
1925 0
|
6月前
|
Linux 应用服务中间件 网络安全
CentOS7搭建本地离线局域网yum源(Httpd/Nginx+yum)
CentOS7搭建本地离线局域网yum源(Httpd/Nginx+yum)
1661 0
|
存储 Linux 索引
CentOS7下同步阿里云CentOS7镜像并自建本地yum仓库
CentOS7下同步阿里云CentOS7镜像并自建本地yum仓库
2150 0
CentOS7下同步阿里云CentOS7镜像并自建本地yum仓库
|
6月前
|
Linux Apache
Linux【环境部署 02】yum源镜像下载+挂载镜像+本地yum源配置+局域网yum源服务搭建+局域网yum源使用(一篇学会离线yum源配置)
Linux【环境部署 02】yum源镜像下载+挂载镜像+本地yum源配置+局域网yum源服务搭建+局域网yum源使用(一篇学会离线yum源配置)
1707 0
|
3月前
|
缓存 Linux 网络安全
解决 CentOS 7 官方 yum 仓库无法使用的最佳实践
【8月更文挑战第18天】若 CentOS 7 的官方 YUM 仓库无法使用,可按以下步骤解决: 1. **检查网络连接**: - 确认服务器能正常上网,可通过访问外部网站或网络诊断测试。 - 检查防火墙设置,避免其阻挡 YUM 的网络访问。 2. **检查 YUM 配置**: - 核实 `/etc/yum.repos.d/` 下的 `CentOS-Base.repo` 文件中仓库地址正确无误。 - 确认配置文件内的 `enabled` 选项设为 `1` 以启用仓库。
1412 0
|
5月前
|
Ubuntu Python
银河麒麟-麒麟软件操作系统 kylin 搭建yum源 ubuntu搭建yum源 yum软件仓库搭建ftp源、python源、硬盘源
银河麒麟-麒麟软件操作系统 kylin 搭建yum源 ubuntu搭建yum源 yum软件仓库搭建ftp源、python源、硬盘源
676 1
|
6月前
|
存储 缓存 Unix
|
6月前
|
缓存 Linux 测试技术
搭建本地YUM仓库
在Redhat 9系统中,通过挂载系统安装盘到/mnt,然后创建本地YUM仓库以实现软件包管理。首先查看磁盘挂载情况,将ISO镜像挂载到/mnt。接着,备份`/etc/yum.repos.d/`目录内容,删除原有仓库,创建`loaclhost.repo`文件并配置指向/mnt中的Package目录。运行`yum clean all`清除缓存,`yum makecache`建立元数据。最后,成功通过新配置的本地仓库安装了bind软件及其依赖。
234 3
|
6月前
|
缓存
简易yum仓库搭建
简易yum仓库搭建,实验准备,获取yum仓库、安装httpd,客户机配置yum源,测试、验证
132 0