家用住宅机器本地yum/apt源离线部署
场景与选题
家庭内网中的服务器或开发机通常无法直接访问互联网,但安装软件包时又依赖yum或apt仓库。
本文面向零基础用户,提供一套完整的离线部署方案:先在一台联网电脑上同步官方仓库数据,再迁移到内网机器上配置为本地源。
操作涵盖CentOS/RHEL(yum)和Ubuntu/Debian(apt)两种主流场景。
一、前置准备
你需要以下设备:
- 一台联网电脑(或虚拟机),用于下载仓库数据。
- 一个U盘或移动硬盘(容量建议≥20GB,具体视需同步的仓库大小而定)。
- 目标内网机器:CentOS 7/8 或 Ubuntu 20.04/22.04 等。
另外,确保联网电脑和目标机系统版本一致(例如都是CentOS 7),否则可能出现依赖冲突。
二、在联网机器上同步仓库数据
针对CentOS/RHEL(yum)
安装 reposync 和 createrepo 工具:
# 如果联网机器是CentOS
sudo yum install -y yum-utils createrepo
创建一个本地目录用于存放仓库,例如 /opt/local-repo:
sudo mkdir -p /opt/local-repo
同步 base、updates、extras 仓库(以CentOS 7为例):
sudo reposync --repoid=base --repoid=updates --repoid=extras --download_path=/opt/local-repo
同步完成后,生成元数据:
sudo createrepo /opt/local-repo
针对Ubuntu/Debian(apt)
安装 apt-mirror:
sudo apt-get install -y apt-mirror
编辑配置文件 /etc/apt/mirror.list,修改为阿里云或清华镜像源,并指定下载目录(例如 /var/spool/apt-mirror):
############# config ##################
set base_path /var/spool/apt-mirror
set nthreads 20
set _var @{mirror}
############# end config ##############
# 以Ubuntu 22.04 focal为例
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
运行 sudo apt-mirror 开始下载。
完成后,所有包保存在 /var/spool/apt-mirror/mirror/mirrors.aliyun.com/ubuntu/ 下。
三、将离线源迁移至内网机器
将联网电脑上下载好的仓库目录(yum对应 /opt/local-repo,apt对应 /var/spool/apt-mirror/mirror/...)复制到U盘或移动硬盘。
在目标内网机器上创建目录,例如 /usr/local/repo,然后复制:
# 假设U盘挂载在 /mnt/usb
sudo cp -r /mnt/usb/local-repo /usr/local/repo # yum
sudo cp -r /mnt/usb/apt-mirror /usr/local/repo # apt
四、配置内网机器使用本地源
CentOS/RHEL 配置本地yum源
备份原有repo文件:
sudo mv /etc/yum.repos.d /etc/yum.repos.d.bak
sudo mkdir /etc/yum.repos.d
创建本地repo文件 /etc/yum.repos.d/local.repo:
[local-repo]
name=Local Repository
baseurl=file:///usr/local/repo
enabled=1
gpgcheck=0
清除缓存并测试:
sudo yum clean all
sudo yum makecache
sudo yum install -y vim # 测试安装
Ubuntu/Debian 配置本地apt源
编辑 /etc/apt/sources.list,注释掉所有远程源,添加本地路径:
deb [trusted=yes] file:///usr/local/repo/apt-mirror/mirrors.aliyun.com/ubuntu focal main restricted universe multiverse
deb [trusted=yes] file:///usr/local/repo/apt-mirror/mirrors.aliyun.com/ubuntu focal-updates main restricted universe multiverse
# 其他组件同理
更新并测试:
sudo apt-get update
sudo apt-get install -y htop
五、效果验证与常见排错
- 验证命令:
yum repolist应显示local-repo且包数不为0;apt-cache policy应提示本地仓库。 - 常见失败原因:
- 目录权限不足:确保
chmod -R 755 /usr/local/repo。 - GPG签名错误:yum可设
gpgcheck=0,apt加[trusted=yes]。 - 版本不匹配:生产环境建议全量与目标机同一版本。
FAQ
Q:仓库同步时磁盘空间不够怎么办?
只同步必用仓库(如base、updates),跳过extras或universe。
Q:家里没有单独的联网电脑,只一台内网机怎么办?
可用U盘在朋友或公司网络上下载好ISO镜像,挂载为本地源(另一种方案,本文不展开,可参考站内相关教程)。
Q:同步速度太慢?
使用国内镜像源(阿里云、清华)替代官方源。