Linux搭建本地yum/apt源住宅主机

为什么要在住宅主机上搭建本地软件源

如果你家里有多台 Linux 设备(比如树莓派、旧笔记本当服务器、虚拟机),每次装软件都要从外网下载,不仅慢还浪费带宽。
更麻烦的是,内网环境没有互联网时,连 apt update 都跑不了。
把一台住宅主机变成本地 yum/apt 源,就能让同局域网内的所有机器共享安装包,速度翻倍,而且断网也能正常维护。

准备工作:一台能联网的 Linux 主机

你只需要一台能正常联网的 Linux 主机(Debian/Ubuntu 或 CentOS/RHEL 都行),硬盘剩余空间建议 40GB 以上(如果只同步常用软件包,20GB 也够)。
此外,确保这台主机与客户端在同一个局域网内,并且已开启 SSH 方便操作。

搭建本地 apt 源(面向 Debian/Ubuntu 系列)

第一步:安装同步工具

sudo apt update
sudo apt install apt-mirror nginx -y

apt-mirror 负责从官方源下载软件包,nginx 用来提供 HTTP 访问。

第二步:配置源列表

编辑 /etc/apt/mirror.list,修改以下内容(以 Ubuntu 22.04 为例):

set base_path /var/www/html/ubuntu-mirror
set nthreads 20
set _tilde 0

# 这里填写你需要的发行版和组件
deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
clean http://archive.ubuntu.com/ubuntu

如果你只需基础软件包,保留 mainuniverse 即可。base_path 是存储目录,后续 nginx 直接指向这里。

第三步:执行同步

sudo apt-mirror

首次同步时间较长(根据网速和包数量,可能需要几小时)。
建议放在夜间或空闲时段运行。

第四步:配置 Nginx

将 nginx 的站点根目录指向同步目录:

sudo ln -s /var/www/html/ubuntu-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/html/ubuntu
sudo systemctl restart nginx

现在在本机用 curl http://localhost/ubuntu 应该能看到目录列表。

第五步:配置客户端

在需要装软件的客户端(其他 Linux 机器)上,修改 /etc/apt/sources.list,替换为本地源地址:

deb http://你的服务器IP/ubuntu jammy main restricted universe multiverse

然后执行 sudo apt update,如果成功,说明本地 apt 源搭建完成。

搭建本地 yum 源(面向 CentOS/RHEL 系列)

第一步:安装必要工具

sudo yum install createrepo yum-utils nginx -y

createrepo 用于生成仓库元数据,reposync 用来同步远程仓库。

第二步:同步 CentOS 7 基础源

以 CentOS 7 为例,先建一个目录并同步:

sudo mkdir -p /var/www/html/centos/7
dnf reposync --repoid=base --download-path=/var/www/html/centos/7 --download-metadata
注意:如果你用 CentOS 7,默认包管理器是 yum,但 reposyncyum-utils 中,命令本身不变。

第三步:生成元数据

sudo createrepo /var/www/html/centos/7

这一步会创建 repodata 目录,yum 客户端必须依赖它才能识别仓库。

第四步:启动 Nginx 并配置仓库暴露

修改 nginx 配置文件,添加一个 location 指向仓库目录:

server {
    listen 80;
    server_name _;
    root /var/www/html;
    autoindex on;
}

重启 nginx: sudo systemctl restart nginx

第五步:客户端配置

在客户端新建文件 /etc/yum.repos.d/local.repo,内容如下:

[local]
name=Local CentOS 7 Base
baseurl=http://你的服务器IP/centos/7
enabled=1
gpgcheck=0

运行 sudo yum clean all && sudo yum repolist,如果能列出仓库且数量正确,则本地 yum 源生效。

高频问题与避坑指南

1. 同步期间磁盘空间不足

同步前用 df -h 检查分区剩余空间。
如果不确定,可以只同步 mainbase 仓库,不要全量同步。

2. 客户端访问失败

  • 检查防火墙:确保服务器防火墙放行 80 端口(sudo ufw allow 80firewall-cmd --add-service=http)。
  • 在客户端用 curl http://服务器IP/ubuntu 测试连通性。

3. 同步中断或报错

apt-mirror 支持断点续传,再次执行会继续。
如果网络不稳定,可以降低 nthreads 线程数。

4. GPG 签名问题

在配置本地 yum 源时,gpgcheck=0 跳过签名验证(内网安全可接受)。
如需要签名,需额外导入官方 GPG 密钥。

如何确认源已生效

  • 服务端:执行 curl http://localhost/ubuntucurl http://localhost/centos/7,应返回目录列表。
  • 客户端:执行 sudo apt update(apt源)或 sudo yum repolist(yum源),能看到新添加的本地仓库。

完成以上步骤后,你的住宅主机就变成了一台内网软件分发中心。
以后所有 Linux 机器安装软件,只需要从这台主机拉取,速度跑满局域网带宽,而且再也不用担心外网挂了。

分享到:
上一篇
网站爬虫抓取超时服务器整改:网站爬虫抓取超时怎么办?服务器配
下一篇
住宅主机搭建私有Git代码仓库零基础教程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意