dnf-仓库服务搭建


1、介绍

关于 yum 的设定分为两部分:main 、repository

1. main

定义了全局配置选项,在整个配置文件中只有一处
vim /etc/yum.conf

[main]
#指定缓存目录,yum 在此存储下载的软件包和数据库
cachedir=/var/cache/yum/$basearch/$releasever
#完成安装后是否保留软件包,0 为不保留(默认值),1 为保留
keepcache=0
#调试信息输出等级,范围为 0~10,缺省为 2
debuglevel=2
#日志文件的位置。用户可以到日志文件中去查询过去所做的更新
logfile=/var/log/yum.log
#这里有1和0两个选项,如果设置为 1,则 yum 只会安装和系统架构匹配的软件包。默认值为 1
exactarch=1
#相当于 upgrade,允许更新陈旧的软件包
obsoletes=1
#同样有 1 和 0 两个选择,分别代表是否是否进行 GPG 校验,以确定软件包的来源是否有效和安全。如果这个选项如果设置在全局部分,则对每个源都有效
gpgcheck=1
#是否启用插件,默认 1 为允许,0 表示不允许。我们一般会使用 yum-fastestmirror 这个插件
plugins=1
#可同时安装 installonlypkgs 指令列出包的数量
installonly_limit=5
#追踪 bug_url
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

2. repository

定义了每个源的具体配置,可以有多个,例如我们将从哪里下载需要安装或者升级的软件包。通常位于 /etc/yum.repos.d/ 目录下:
本地源的配置文件 rocky93-local.repo
网络源的配置文件 CentOS-Base.repo

2、配置服务仓库

仓库文件服务器包括如下几种:

  1. 本地服务仓库 file://
  2. http 服务仓库 http://
  3. https 服务仓库 https://
  4. ftp 服务仓库 ftp://

1. 首先我们需要搭建本地服务器,然后再以本地服务器为基础搭建 http 服务仓库,本地搭建方式有 2 种:

  1. iso 文件搭建本地源
  2. rsync 同步公网 yum 源
    (2 选 1 即可)

2. 使用 iso 文件搭建本地源 (不使用此步骤用公网 yum )

  1. 挂载系统 iso 光盘
mkdir -p /data/dnf/rocky93
mkdir /media/cdrom
mount -t iso9660 /dev/cdrom /media/cdrom
cp -rp /media/cdrom/* /data/dnf/rocky93/
umount /media/cdrom
  1. 禁用默认的网络源
    所谓的禁用,就是将网络源的配置文件改名,否则 yum 指令会先在网络源中寻找适合的包,而改名后才会从本地源读取
mkdir /etc/yum.repos.d/bak -p
mv /etc/yum.repos.d/* /etc/yum.repos.d/bak/
  1. 修改本地源的配置文件
    vi /etc/yum.repos.d/rocky93-local.repo
[Local-BaseOS]
name=rocky93 - BaseOS
enabled=1
metadata_expire=-1
baseurl=file:///data/dnf/rocky93
gpgcheck=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9
  1. 刷新 DNF
dnf clean all
# 查看配置存储库
dnf repolist
ps: 此种方式不需要使用 createrepo 创建索引文件,因为 iso 文件中已经创建好了索引文件位于 repodata 文件夹中
通过进行上面的操作,若果再执行 yum 指令,系统将把挂载的光盘作为首选的软件源

3、rsync 同步公网 yum 源

1. 设置阿里云镜像为本地 yum 源

#备份系统自带的 yum 源
mkdir /etc/yum.repos.d/backup
mv -rp /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/
# centos7
#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
#wget -O /etc/yum.repos.d/RPM-GPG-KEY-CentOS-7 http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# rocky9
sed -e 's|^mirrorlist=|#mirrorlist=|g' -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' -i.bak /etc/yum.repos.d/[Rr]ocky*.repo
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

//dnf config-manager --set-enabled crb
//dnf install epel-release

dnf repolist
dnf clean all
yum makecache

2. 安装 createrepo

dnf install -y createrepo

3. 同步阿里源到本地目录

mkdir /data/dnf/rocky93 -p
dnf install -y yum-utils
reposync -np /data/dnf/rocky93
#cp /etc/yum.repos.d/RPM-GPG-KEY-CentOS-7 /data/dnf/rocky93/
\cp -rp /etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 /data/dnf/rocky93/

ps:不用担心没有创建相关目录,系统自动创建相关目录,并下载,时间较长请耐心等待

4. 初始化 repodata 索引文件

createrepo -po /data/dnf/rocky93/baseos/ /data/dnf/rocky93/baseos/
createrepo -po /data/dnf/rocky93/extras/ /data/dnf/rocky93/extras/
createrepo -po /data/dnf/rocky93/appstream/ /data/dnf/rocky93/appstream/
createrepo -po /data/dnf/rocky93/epel/ /data/dnf/rocky93/epel/
createrepo -po /data/dnf/rocky93/crb/ /data/dnf/rocky93/crb/
createrepo -po /data/dnf/rocky93/epel-cisco-openh264/ /data/dnf/rocky93/epel-cisco-openh264/

dnf repolist

5. 更新 repodata 索引文件

createrepo --update /data/dnf/rocky93/baseos/
createrepo --update /data/dnf/rocky93/extras/
createrepo --update /data/dnf/rocky93/appstream/
createrepo --update /data/dnf/rocky93/epel/
createrepo --update /data/dnf/rocky93/crb/
createrepo --update /data/dnf/rocky93/epel-cisco-openh264/

ps:每次更新 rpm 包需要执行 createrepo --update 来更新索引
通过进行上面的操作,我们就把阿里源同步到了本地目录里面

4、配置 http 服务仓库

1. 安装 nginx

dnf install -y nginx

2. 配置 nginx

vi /etc/nginx/nginx.conf

user nginx;
worker_processes  auto;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        root         /data/dnf/rocky93;
        location / {
            # 打开目录浏览功能
            autoindex on;
            # off:以可读的方式显示文件大小
            autoindex_exact_size off;
            # on、off:是否以服务器的文件时间作为显示的时间
            autoindex_localtime on;
            # 展示中文文件名
            charset utf-8,gbk;
            index index.html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
// 启动 nginx
nginx
systemctl status nginx
systemctl enable nginx
systemctl status nginx
浏览器访问 http://服务器ip地址/ 至此 yum 服务端就安装好了

5、客户端配置

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

vi /etc/yum.repos.d/rocky-local.repo

#CentOS-Base.repo
# [serverid] 用于区别各个不同的仓库,必须有一个唯一的名称
[baseos]
name=Baseos - mirror-rocky.sui.com
baseurl=http://mirror-rocky.sui.com/baseos/
enabled=1
gpgcheck=1
gpgkey=http://mirror-rocky.sui.com/RPM-GPG-KEY-Rocky-9
[appstream]
name=Appstream - mirror-rocky.sui.com
baseurl=http://mirror-rocky.sui.com/appstream
enabled=1
gpgcheck=1
gpgkey=http://mirror-rocky.sui.com/RPM-GPG-KEY-Rocky-9
[extras]
name=Extras - mirror-rocky.sui.com
baseurl=http://mirror-rocky.sui.com/extras
enabled=1
gpgcheck=1
gpgkey=http://mirror-rocky.sui.com/RPM-GPG-KEY-Rocky-9
[epel]
name=Epel - mirror-rocky.sui.com
baseurl=http://mirror-rocky.sui.com/epel
enabled=1
gpgcheck=0
[crb]
name=Crb - mirror-rocky.sui.com
baseurl=http://mirror-rocky.sui.com/crb
enabled=1
gpgcheck=0

把上面的客户端文件 CentOS-Base.repo 分发到各客户端即可

             ------------------------------- THE END -------------------------------

posted @ 2025-02-13 16:18  ordinaryRoadX  阅读(5)  评论(0编辑  收藏  举报