部署本地yum 离线仓库

前言

内部主机在无公网网络或不占用公网带宽的情况下更新/安装软件包。挂载系统镜像做为本地仓库源数据,基本能解决大部分需求,但有时需要更新大量软件包,这时就需要本地仓库数据和官方仓库数据保持一致。
本文主要实现基于挂载系统镜像和同步官方数据的本地仓库

约定

本地仓库目录:/data/repo
ftp/web服务安装配置不在此介绍
服务端 OS 仓库 ip:192.168.100.10
客户端 主机ip :192.168.100.100
系统镜像:Centos6.x86_64.iso

准备

服务端:
系统镜像文件上传到主机/data 目录下
挂载iso镜像

#mkdir /data/repo/cdrom
#mount -o loop /data/Centos6.x86_64.iso /data/repo/cdrom

同步/下载官方源数据

官方提供镜像地址列表 https://www.centos.org/download/mirrors/
因完整源数据数据量大(大概有300G+),这里只获取需要的数据源(centos 6系)
创建相关目录
os:基础包源
updates:更新/升级包源
extras:扩展包源
epel:额外包源

mkdir -p /data/repo/centos/6/{os,updates,extras}/x86_64
mkdir -p /data/repo/epel/6/x86_64

这里有以下几种方式获取源数据(根据具体环境,任选一种即可)
1.rsync
仓库主机需要公网访问权限,亦可将办公电脑作为数据中转站(先同步到办公电脑,再推送到仓库主机上)
源数据同步到本地(需要源地址支持rsync协议)
远程同步到本地,数据源地址在前,本地目录在后
本地同步到远程,数据源目录在前,目的地址在后

#rsync -artv rsync://mirrors.shu.edu.cn/centos/6/os/x86_64/ /data/repo/centos/6/os/x86_64
#rsync -artv rsync://mirrors.shu.edu.cn/centos/6/updates/x86_64/ /data/repo/centos/6/updates/x86_64
#rsync -artv rsync://mirrors.shu.edu.cn/centos/6/extras/x86_64/ /data/repo/centos/6/extras/x86_64

#rsync -artv --exclude=debug rsync://mirrors.shu.edu.cn/epel/6/x86_64/ /data/repo/epel/6/x86_64

-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-v, --verbose 详细模式输出
-t, --times 保持文件时间信息
-u, --update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件,不覆盖更新的文件

2.ftp
此种方式适用于仓库服务器无法访问公网情况,使用可访问公网的电脑,通过ftp客户端将源数据下载到本地,然后再将数据上传到仓库服务器
目录结构与上述方式相同,具体步骤不做描述

3.yum makecache
配置yum文件

cat /etc/yum.repo.d/yum.repo
[Base]
name=CentOS-Base
baseurl=http://mirrors.shu.edu.cn/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.shu.edu.cn/centos/$releasever/os/$basearch/RPM-GPG-KEY-CentOS-6
[Updates]
name=CentOS-Updates
baseurl=http://mirrors.shu.edu.cn/centos/$releasever/updates/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.shu.edu.cn/centos/$releasever/os/$basearch/RPM-GPG-KEY-CentOS-6
[Extras]
name=CentOS-Extras
baseurl=http://mirrors.shu.edu.cn/centos/$releasever/extras/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.shu.edu.cn/centos/$releasever/os/$basearch/RPM-GPG-KEY-CentOS-6
[Epel]
name=CentOS-Epel
baseurl=http://mirrors.shu.edu.cn/epel/$releasever/$basearch/
enabled=1
gpgcheck=0

如果系统获取不到变量或获取不正确,可将变量替换为对应的版本和架构,如

$releasever 替换为 6
$basearch 替换为 x86_64
http://mirrors.shu.edu.cn/centos/$releasever/os/$basearch/
替换为
http://mirrors.shu.edu.cn/centos/6/os/x86_64
centos 可使用如下命令获取读应变量值
rpm -qi centos-release
arch

清空原有缓存,并建立数据缓存

yum clean all
yum makecache

获取仓库列表

yum repolist 

同步镜像到本地

cd /data/repo
reposync -r Base
reposync -r Updates
reposync -r Extras
reposync -r Epel

建立元数据索引

createrepo -d Base
createrepo -d Updates
createrepo -d Extras
createrepo -d Epel

可上传自有rpm包到仓库,上传后使用createrepo -u 仓库目录,更新仓库索引即可。
以上三种方式,前两种都可以同步到元数据索引,因此不需要重新建立,最后一种数据未下载完,因此不确认是否有repodata目录,如有此目录且目录不为空,基本就是包含索引的。
到此就完成了元数据的创建,可使用ftp/nginx 服务作为外部访问,配置时将根目录配置为/data/repo目录即可

客户端使用本地yum源

配置客户端yum文件

cat /etc/yum.repo.d/yum.repo
[Base]
name=CentOS-Base
baseurl=http://192.168.100.10/centos/6/os/$basearch/
enabled=1
gpgcheck=1
[Updates]
name=CentOS-Updates
baseurl=http://192.168.100.10/centos/6/updates/$basearch/
enabled=1
gpgcheck=1
[Extras]
name=CentOS-Extras
baseurl=http://192.168.100.10/centos/6/extras/$basearch/
enabled=1
gpgcheck=1
[Epel]
name=CentOS-Epel
baseurl=http://192.168.100.10/epel/6/$basearch/
enabled=1
gpgcheck=0

清空缓存并更新

yum clean all
yum update -y

到此,客户端就可以使用本地yum源更新/安装软件了

Issue:

  1. yum grouplist时报错,无法获取group信息
    更新/创建组索引
    这里需要注意下使用comps.xml 文件,完整文件名不统一,但文件名后面肯定是“comps.xml”

    cd /data/repo/centos/6/os/x86_64/
    createrepo -g repodata/2318fd068164b0f042845474d6a22262798b9f0d1f49ad1bf9f95b953089666d-c6-x86_64-comps.xml ./

原文地址:http://blog.51cto.com/morrowind/2104418

时间: 2024-10-09 19:37:09

部署本地yum 离线仓库的相关文章

FTP方式部署本地yum源

一.配置本地YUM源 1.挂载CentOS7.4镜像至/mnt目录下(镜像在vmwareCD中) mount /dev/cdrom /mnt 2.在opt目录创建本地仓库,删除网页文件 cp -rv /mnt/* /opt/ cd /opt/ rm -rf *.html rm -rf repodata/TRANS.TBL 3.生成yum通用数据库 cd /mnt/Packages/ [[email protected] Packages]# yum install createrepo-0.9.

创建本地yum源仓库

1 更新本地yum源 2 yum仓库服务端配置如下 : 3 1. 创建yum仓库目录 4 5 mkdir -p /data/yum_data/ 6 cd /data/yum_data/ 7 #可以上传rpm包到此目录,此目录下面还可以包括文件夹 8 9 2. 安装createrepo软件 10 [[email protected] yum_data]# yum -y install createrepo 11 12 13 3. 初始化repodata索引文件 14 createrepo -pdo

本地YUM源仓库(内网)

YUM仓库有三种部署方式:FTP.HTTP和本地方式. --服务端: mkidr /data                     #目录用于存放RPM包(所有的软件包) chown -R apache.apache /data      #FTP与HTTP共用目录,所以权限修改为apache  yum install -y createrepo        #createrepo用于创建yum索引  createrepo -v /data          #创建/data/目录的rpm包

本地yum仓库和http方式的yum仓库。

有同学问我本地yum仓库的问题,写此文档,赠与不会安装本地yum仓库的小伙伴. 接下来讲解在局域网中搭建RedHat/CentOS本地http yum软件源的具体步骤:一.挑选局域网中的一台服务器做为http yum软件源服务器,建议关闭这台服务器的Linux防火墙以及SELINUX,避免局域网中其他服务器无法穿过其防火墙而导致访问http源.1.关闭防火墙(如果你很精通Linux防火墙亦可将80端口设置放行): # chkconfig iptablesoff 2.关闭SELNUX: # 修改S

centos 创建本地yum源搭建本地yum仓库 亲测可用

现在如果我们需要大规模部署洗个系统,或者系统需要安装一个什么软件如nginx之类的软件.有的时候你的环境限制你上外网,或者是外网很慢的时候.我们考虑搭建本地yum仓库,内网机器可以直接快速安装所需的软件,解决linux下面的包的依赖,方便,快捷. 下面我们来搭建一下根底yum仓库: 系统:centos6.5 搭建yum仓库有很多种方法,我们这里使用yum插件yum-downloadonly插件来下载我们所需的rpm包.使用createrepo来创建仓库文件. 开始: 我们需要安装zabbix监控

Linux学习—部署yum网络仓库

yum除了可以配置本地仓库外,还可以配置服务器网络仓库,这时需要先配置服务器并上传文件 步骤如下: 1.安装 vsftpd 为了完成服务器与客户端的文件传输,需要使用FTP协议,在Linux下使用vsftpd软件(Very Secure FTP Daemon)完成部署FTP服务器 使用rpm命令安装vsftpd: ① rpm -ivh vsftpd-2.2.2-24.el6.x86_64.rpm 2.启动vsftpd服务及设置重启后自动启动 使用命令netstat查看vsftpd的监听状态为关闭

本地yum源构建以及Docker离线安装

Docker离线安装以及本地yum源构建 在docker的使用过程中有时候会遇到一些私有化部署的问题,就是在一些无法上网的机器上面安装使用dokcer,这就引出了docker的离线安装的问题,docker要如何进行离线安装呢?让我们接下来一步步阐述. 环境: centos 7.0 内核版本3.10.0-229.el7.x86_64 docker 1.12.6版本 基本思路: 在可以连接外网的机器(未安装过docker,同时跟局域网要安装docker的机器系统版本一致)通过yum命令将rpm以及相

ubuntu 制作本地yum仓库

ubuntu 制作本地yum仓库 笔者: 张首富 W X: y18163201(请备注) qq群:895291458 时间:2019-01-31晚 今天到某银行进行软件部署的时候,碰到所有电脑都不允许联网的要求,我们的服务器带过去还不能用我们自己的硬盘,必须使用它们银行内部提供的硬盘,这就意味着我需要重新安装服务器系统,需要重新部署我们的软件环境,这些都小意思(no problem),但是最大的问题是我不能联网,不能联网,不能联网.这就意味着我所有需要在线安装的软件都必须在本地完成.于似乎我有想

通过挂载系统光盘搭建本地yum仓库的方法

1.挂载光盘 [[email protected] ~]# mount /dev/cdrom /media/cdrom/ mount: /dev/sr0 写保护,将以只读方式挂载 /media下的cdrom目录是事先创建好的 2.修改yum配置文件(文件位置:/etc/yum.repos.d) [[email protected] /]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# mkdir bak #创建一个文件夹来存放多余的配