Linux离线源办法
介绍 Linux 离线环境下的软件源搭建与使用方案。
本文应委托需求,特出一条离线环境下的软件源仓库配置办法,覆盖本地镜像源与内网全量镜像源两种场景。
一、Linux本地源
1. YUM源
挂载安装光盘,并将 yum 源指向本地镜像,避免依赖外网:
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom/
cd /etc/yum.repos.d/ls
# 备份默认源(不同系统本地源名字不一样)mv kylin_x86_64.repo kylin_x86_64.repo.bak
# 新建本地源vi local.repolocal.repo 内容如下:
[iso]baseurl=file:///media/cdromenabled=1gpgcheck=02. APT源
挂载 ISO 镜像,并将 apt 源指向本地镜像,避免依赖外网:
sudo mkdir -p /mnt/iso
sudo mount -t iso9660 -o loop /opt/ubuntu-22.04.5-live-server-amd64.iso /mnt/iso
# 检查挂载情况df -hT
# 备份默认源sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
# 新建本地源sudo vi /etc/apt/sources.listsources.list 内容如下(jammy 为 ubuntu22.04 的版本代号):
deb file:///mnt/iso jammy main restricted版本代号对照:
xenial(16.04)、bionic(18.04)、focal(20.04)、jammy(22.04),请按实际系统版本替换。
检查验证:
sudo apt-get update
sudo apt-get install curl vim ssh二、指定源仓库下载
这个办法指在部分内网环境通过一台服务器获取全量源,然后通过内网给其他服务器使用。
1. YUM源
在一台能访问外网的服务器上,通过 reposync 将网络源的全量 rpm 包下载到 httpd 默认发布目录,内网其他服务器将 yum 源指向该服务器:
# 备份默认源,从阿里云下载 yum 配置文件cd /etc/yum.repos.d/ && mkdir backup && mv *.repo backup/
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
# 安装相关软件包(yum-utils 提供 reposync)yum -y install createrepo yum-utils httpd
# 创建仓库目录(httpd 默认发布目录,无需额外配置)mkdir -p /var/www/html/yumrepos
# 根据 CentOS-Base.repo 同步阿里云软件包到本地reposync -p /var/www/html/yumrepos/
# 生成仓库元数据(为 rpm 包建立依赖索引,客户端才能解析依赖)createrepo /var/www/html/yumrepos/base
# 启动 httpdsystemctl enable httpd && systemctl start httpd下载完成后将服务器接入内网(或通过双网卡使内网可达)。若仓库有增量更新,重新执行
reposync -p /var/www/html/yumrepos/,再执行createrepo --update /var/www/html/yumrepos/base增量生成元数据。
内网其他服务器配置源:
vi /etc/yum.repos.d/local.repolocal.repo 内容如下(server_ip 替换为YUM服务器内网地址):
[base]name=Local Basebaseurl=http://server_ip/yumrepos/baseenabled=1gpgcheck=0检查验证:
yum clean all
yum makecache
yum repolist2. APT源
在一台能访问外网的服务器上通过 apt-mirror 同步全量 deb 包,借助 apache2 提供 HTTP 服务,内网其他服务器将 apt 源指向该服务器:
# 下载机安装 apt-mirror 与 apache2apt-get install -y apt-mirror apache2
# 编辑镜像列表vi /etc/apt/mirror.listmirror.list 内容如下:
set base_path /var/spool/apt-mirrorset nthreads 20
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverseclean http://mirrors.aliyun.com/ubuntu/同步全量源并发布:
# 执行同步(约几十 G,支持断点续传,中断后重新执行即可)apt-mirror
# 若中断后无法启动,删除锁文件后重试sudo rm -f /var/spool/apt-mirror/var/apt-mirror.lock
# 软链接镜像目录到 apache2 默认发布目录sudo ln -s /var/spool/apt-mirror/mirror/mirrors.aliyun.com/ubuntu /var/www/html/ubuntu
# 启动 apache2sudo systemctl enable --now apache2内网其他服务器配置源:
sudo vi /etc/apt/sources.listsources.list 内容如下(server_ip 替换为下载机内网地址):
deb [arch=amd64] http://server_ip/ubuntu/ jammy main restricted universe multiverse检查验证:
sudo apt-get update
sudo apt-get install curl vim ssh三、总结
- 本地源:适合无外网并且小规模的离线环境,直接挂载 ISO 镜像或光盘即可,常见于比赛环境。
- 指定源仓库下载:适合生产环境,通过一台服务器同步全量源,其他服务器通过 HTTP 访问,可以根据需求扩展软件包。
- 注意事项:
- 本地源无需额外服务,但需提前准备 ISO 镜像或光盘。
- 指定源仓库下载需部署 HTTP 服务,但可支持增量更新。
- 挂载 ISO 镜像时注意版本代号(如
jammy为 Ubuntu 22.04),否则软件包无法识别。


