在Linux中搭建本地yum/dnf仓库

一分钟快速构建本地yum/dnf软件仓库------以OpenEuler服务器为例https://blog.csdn.net/xiaochenXIHUA/article/details/155276471

一、搭建本地yum/dnf仓库所需的HTTP服务

bash 复制代码
#使用Nginx作为【Http Server】
#1-下载nginx
yum install nginx -y


#2-修改Nginx的配置文件【nginx.conf】开启目录索引功能
cd /etc/nginx
vi nginx.conf
#主要在nginx.conf的server下开启目录索引功能
        autoindex on;
        autoindex_exact_size on;
        autoindex_localtime on;


#3-重启nginx并查看进程信息
systemctl restart nginx.service
ps -ef | grep nginx

Nginx中的内置变量、指令、URL重写功能及其虚拟主机配置、负载均衡配置https://coffeemilk.blog.csdn.net/article/details/151138716

二、添加rpm文件到yum/dnf仓库中

bash 复制代码
#添加rpm文件到yum/dnf仓库中
#1-Nginx的存放内容目录是【/usr/share/nginx/html】


#2-在Nginx的存放内容目录创建soft目录,然后将需要将共享的各类软件rpm包,都复制到这个soft目录下或者在soft目录下创建子目录进行分类存储
cd /usr/share/nginx/html/
mkdir soft


#3-获取rpm包的方法【注意:在配置这些rpm包的时候不能只是配置rpm包的主程序,还需要将主程序所涉及的依赖包也配置上才行】
#3.1-获取rpm包的方法一(直接从各个镜像地址
#【如:https://developer.aliyun.com/mirror】
#【如:https://mirrors.huaweicloud.com/home】
#找到对应版本下载对应系统版本的rpm文件后复制到soft指定系统版本的目录下)【适合rpm较少的情况】

#3.2-获取rpm包的方法二(使用yum/dnf命令只下载不安装rpm包【使用该命令的前提是,这个rpm包没有在本系统中安装过】)
yum -y install --downloadonly --downloaddir=/tmp vsftpd

#3.3-获取rpm包的方法三(从公网镜像同步已经存在的源到本地)【可从中科大、阿里云、华为云拉取】
#如centos源【中科大:rsync://rsync.mirrors.ustc.edu.cn/centos/】【阿里云:rsync://mirrors.aliyun.com/centos】【华为云:rsync://mirrors.huaweicloud.com/centos】
#如epel源【中科大:rsync://rsync.mirrors.ustc.edu.cn/epel/】【阿里云:rsync://mirrors.aliyun.com/epel/7/x86_64/】【华为云:rsync://mirrors.huaweicloud.com/epel/7/x86_64/】
#手动同步示例:
mkdir -p /data/centos/8/AppStream/x86_64/os/Packages
rsync -avrtP --delete --bwlimit=5000 --ignore-errors --timeout=600 --protocol=31 --log-file=/var/log/centos8_appstream_sync.log rsync://mirrors.ustc.edu.cn/centos-vault/8.5.2111/AppStream/x86_64/os/Packages/ /data/centos/8/AppStream/x86_64/os/Packages/
#定时同步示例(每天凌晨3点执行同步任务):
crontab -e
0 3 * * * /usr/bin/rsync -avrtP --delete --bwlimit=5000 --ignore-errors --timeout=600 --log-file=/var/log/centos8_appstream_sync.log rsync://mirrors.ustc.edu.cn/centos-vault/8.5.2111/AppStream/x86_64/os/Packages/ /data/centos/8/AppStream/x86_64/os/Packages/ >/dev/null 2>&1
mkdir -p /usr/share/nginx/html/soft/centos/8/AppStream/x86_64/os/Packages
ln -s /data/centos/8/AppStream/x86_64/os/Packages /usr/share/nginx/html/soft/centos/8/AppStream/x86_64/os/Packages

#3.4-获取rpm包的方法四(直接将对应系统的iso镜像文件挂载后找到对应的rpm包拷贝到我们本地的仓库目录中)


#4-放开防火墙的80端口
firewall-cmd --list-port
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port

三、生成索引库

3.1、生成索引库

已经指定了yum/dnf仓库的根目录是【/usr/share/nginx/html/soft】,但为了让yum/dnf能识别【/usr/share/nginx/html/soft】下的所有目录,因此需要创建yum/dnf存储库;而创建存储库需要【createrepo】命令,所以要先安装这个命令,然后再创建存储库。

bash 复制代码
#生成索引库
#1-安装【createrepo】
yum install createrepo -y

#2-创建存储库【该命令可以多次执行(即只要该目录下的内容有变动,执行该命令,变动的部分才会被创建索引关联上)】
#2.1-(给【/usr/share/nginx/html/soft】目录下的所有目录内容创建存储库,会在该目录下自动生成一个名为【repodata】的目录)
createrepo /usr/share/nginx/html/soft
#2.2-(给【/usr/share/nginx/html/soft/centos/8/AppStream/x86_64/os】目录下的所有目录内容创建存储库,会在该目录下自动生成一个名为【repodata】的目录)
createrepo /usr/share/nginx/html/soft/centos/8/AppStream/x86_64/os

3.2、测试本地搭建的yum/dnf仓库

bash 复制代码
#测试本地搭建的yum/dnf仓库
#1-在另一台主机上创建本地搭建的yum/dnf仓库
vi /etc/yum.repos.d/local.repo

#【/etc/yum.repos.d/local.repo】文件的内容如下
[localdnf]
name=local_dnf
baseurl=http://192.168.1.42/soft/
gpgcheck=1
enabled=1

#2-清空缓存、生成原数据和查看仓库信息
yum clean all
yum makecache
yum repolist


#3-测试安装redis(如下图所示:仓库显示localdnf且可以获取对一个的内容下载安装则表示本地yum/dnf仓库配置成功)
yum install redis -y



#或【/etc/yum.repos.d/local.repo】文件的内容如下
[localcentos]
name=local_centos
baseurl=http://172.16.213.239/soft/centos/8/AppStream/x86_64/os
gpgcheck=1
enabled=1

#清空缓存、生成原数据和查看仓库信息
yum clean all
yum makecache
yum repolist

#测试安装nginx
yum install nginx -y

到这里恭喜你测试搭建的本地yum/dnf仓库完成了,可以正常使用。

相关推荐
倔强的石头1063 小时前
Linux 进程深度解析(四):环境变量 —— 进程的“环境 DNA”
linux·运维·服务器
大聪明-PLUS3 小时前
优雅的操作系统开发:用现代 C++ 编写操作系统内核(不使用宏)。第一部分——HAL 为王。
linux·嵌入式·arm·smarc
qq_455760854 小时前
Docker - 镜像
linux·运维·docker
m0_534875054 小时前
Ditto局域网同步功能实现宿主机和VMware虚拟机之间的复制粘贴共享
linux·运维·服务器
RisunJan4 小时前
Linux命令-hdparm命令(获取和设置硬盘参数)
linux·运维·服务器
骄傲的心别枯萎4 小时前
RV1126 NO.58:ROCKX+RV1126人脸识别推流项目之读取人脸数据库并保存到map
linux·数据库·计算机视觉·音视频·rv1126
羑悻的小杀马特4 小时前
【Linux篇章】再续传输层协议TCP:用技术隐喻重构网络世界的底层逻辑,用算法演绎‘网络因果律’的终极推演(通俗理解TCP协议,这一篇就够了)!
linux·网络·后端·tcp/ip·tcp协议
博语小屋4 小时前
Socket 编程TCP:多线程远程命令执行
linux·网络·c++·网络协议·tcp/ip
列逍4 小时前
Linux 动静态库深度解析:原理、制作与实战
linux·运维·服务器·动态库·静态库