当前位置: 首页 > news >正文

搭建本地 apt 源

搭建本地 Ubuntu APT 源,类似阿里云或中科大镜像站的模式。这通常有两种方案:


方案一:使用apt-mirror完整镜像(推荐)

适合需要完整镜像官方仓库的场景。

1. 安装 apt-mirror

sudoaptupdatesudoaptinstallapt-mirror apache2

2. 配置镜像列表

编辑/etc/apt/mirror.list

sudotee/etc/apt/mirror.list<<'EOF' ############# config ################## # set base_path /var/spool/apt-mirror # # 镜像存放路径 set mirror_path $base_path/mirror set skel_path $base_path/skel set var_path $base_path/var set cleanscript $var_path/clean.sh set defaultarch amd64 set postmirror_script $var_path/postmirror.sh set run_postmirror 0 set nthreads 20 set _tilde 0 # ############# end config ############## # Ubuntu 24.04 (noble) 主仓库 deb http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu noble-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu noble-security main restricted universe multiverse # 如需镜像源码,取消注释: # deb-src http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse # 清理配置 clean http://archive.ubuntu.com/ubuntu clean http://security.ubuntu.com/ubuntu EOF

3. 开始同步(首次需数小时至数天)

sudoapt-mirror

数据将下载到/var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu/

4. 配置 Web 服务(Apache2)

# 创建软链接到 Apache 根目录sudomkdir-p/var/www/html/ubuntusudoln-s/var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/html/ubuntu/archive# 或者配置 Apache 虚拟主机sudotee/etc/apache2/sites-available/apt-mirror.conf<<'EOF' <<VirtualHost *:80> ServerName apt.local DocumentRoot /var/spool/apt-mirror/mirror <Directory /var/spool/apt-mirror/mirror> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> # 启用目录列表(方便浏览) <Directory /> Options +Indexes </Directory> ErrorLog ${APACHE_LOG_DIR}/apt-mirror-error.log CustomLog ${APACHE_LOG_DIR}/apt-mirror-access.log combined </VirtualHost> EOFsudoa2ensite apt-mirrorsudosystemctl reload apache2

5. 设置定时同步(可选)

sudotee/etc/cron.d/apt-mirror<<'EOF' # 每天凌晨 2 点同步 0 2 * * * root /usr/bin/apt-mirror > /var/log/apt-mirror.log 2>&1 EOF

方案二:使用reprepro自建小型仓库

适合只托管自定义软件包或精选包的轻量场景。

1. 安装工具

sudoaptinstallreprepro apache2 dpkg-dev

2. 创建仓库结构

sudomkdir-p/var/www/html/apt/{conf,dists,incoming,pool}sudochown-R$USER:$USER/var/www/html/apt

3. 配置 reprepro

编辑/var/www/html/apt/conf/distributions

cat>/var/www/html/apt/conf/distributions<<'EOF' Origin: Local APT Repo Label: Local Repo Suite: noble Codename: noble Architectures: amd64 arm64 source Components: main restricted universe multiverse Description: Local Ubuntu 24.04 Repository SignWith: yes EOF

4. 生成 GPG 密钥(用于签名)

# 生成密钥(交互式,或使用批处理模式)gpg --full-generate-key# 选择 RSA,4096位,设置姓名/邮箱# 导出公钥给客户端使用gpg--armor--exportyour-email@example.com>/var/www/html/apt/repo.pub

5. 添加软件包

# 下载或复制 .deb 包到 incomingcd/var/www/html/apt# 添加包到仓库reprepro includedeb noble /path/to/package.deb# 或者批量添加reprepro includedeb noble incoming/*.deb

6. 配置 Apache

sudotee/etc/apache2/sites-available/local-apt.conf<<'EOF' <<VirtualHost *:80> ServerName apt.local DocumentRoot /var/www/html/apt <Directory /var/www/html/apt> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/local-apt-error.log CustomLog ${APACHE_LOG_DIR}/local-apt-access.log combined </VirtualHost> EOFsudoa2ensite local-aptsudosystemctl reload apache2

客户端配置(使用自己的源)

1. 创建源列表文件

sudotee/etc/apt/sources.list.d/local-mirror.list<<'EOF' # 本地完整镜像(方案一) deb [arch=amd64] http://your-server-ip/ubuntu/archive noble main restricted universe multiverse deb [arch=amd64] http://your-server-ip/ubuntu/archive noble-updates main restricted universe multiverse deb [arch=amd64] http://your-server-ip/ubuntu/archive noble-security main restricted universe multiverse # 或者本地自建仓库(方案二) # deb [arch=amd64 signed-by=/usr/share/keyrings/local-repo.gpg] http://your-server-ip/apt noble main EOF

2. 导入 GPG 密钥(方案二需要)

# 下载并导入公钥wget-qO- http://your-server-ip/apt/repo.pub|sudogpg--dearmor-o/usr/share/keyrings/local-repo.gpg# 更新sudoaptupdate

方案对比

特性apt-mirror完整镜像reprepro自建仓库
存储需求数百 GB(完整 Ubuntu 仓库)几 MB 起(按需添加)
同步时间首次数小时,增量较快即时生效
适用场景内网大量机器、无外网环境自定义软件包、小型团队
维护复杂度中等(需定期同步)
带宽节省高(本地缓存)取决于包数量
签名验证使用官方签名需自建 GPG 密钥

常见问题

磁盘空间不足

# 查看镜像大小du-sh/var/spool/apt-mirror/mirror/# Ubuntu 完整镜像约 1-2TB,建议预留空间# 可只镜像部分组件(如只保留 main)

同步失败/断点续传

# apt-mirror 支持断点续传,重新运行即可sudoapt-mirror# 查看日志排查问题tail-f/var/log/apt-mirror.log

多版本 Ubuntu 支持

/etc/apt/mirror.list中添加多行:

deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu noble main restricted universe multiverse

如果需要完整内网镜像(类似阿里云),选方案一;如果只需要托管自定义软件包,选方案二更轻量。

http://www.zskr.cn/news/1526278.html

相关文章:

  • 别再只调solvePnP了!深入对比EPnP、IPPE等6种算法在无人机着陆标志识别中的精度与速度
  • 安能物流200公斤跨省邮寄多少钱?安能物流200公斤跨省运费多少?省钱技巧来了 - 快递物流资讯
  • ctf show web入门115
  • 118、【Agent】【OpenCode】项目配置(重复依赖分析)
  • 从写完就发到AI发布策略_CSDN_AI数字营销让内容分发变了什么
  • 免费IDM激活脚本完整指南:一键解锁下载加速器
  • Nature 子刊观点:AI 检测让论文写作陷入两难
  • 3步实现缠论自动分析:通达信免费插件实战指南
  • 如何让Paperless-ngx说你的语言:从中文界面到多语言文档管理
  • 微信社交关系管理神器:3分钟检测谁删了你,告别单向好友烦恼
  • 2026免费音频转AMR在线保姆级教程!无限制工具手把手教学,老旧录音笔也能轻松播放 - 时时资讯
  • 2026免费视频转AVI在线保姆级教程!无限制工具手把手教学,老式影碟机/U盘即插即播 - 时时资讯
  • MPC7450缓存架构与MPX总线设计:从原理到工程实践
  • 京东寄大件物流怎么收费?超全省钱攻略来了 - 快递物流资讯
  • 软件开发全链路效能提升实战指南
  • 2026年双螺杆造粒机五大主流厂家深度实测对比(技术参数、场景适配、运维成本) - 小艾信息发布
  • 2020年软考-集团分公司管理—软件设计师—东方仙盟
  • GSV2221@ACP#DP 1.4 MST 多屏转换芯片,物理 AI 多模态交互的视觉中枢
  • GSV2231@ACP#三屏 DP 1.4 MST 转换芯片,物理 AI 多任务协同的扩展核心
  • 告别重复安装!利用Python虚拟环境(venv)一劳永逸管理你的项目依赖
  • Java毕设选题推荐:基于 B/S 架构的校园信息交流共享系统的设计与实现 依托 SpringBoot 技术的校园资讯推送共享系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 满心禧月子中心资质证书查哪些|月子中心资质怎么核实才靠谱 - 品牌观察
  • League Akari:英雄联盟客户端的终极一体化工具箱
  • 好客搜整体介绍——一家真正为企业营销赋能的AI技术公司
  • PlotNeuralNet实战:5分钟为你的YOLOv8/Transformer模型定制专属结构图(Python3.10+)
  • 从鸢尾花分类到用户流失预测:用Scikit-learn快速上手决策树实战
  • 【.NET并发编程 - 16】IAsyncEnumerable 异步流:边加载边处理的优雅之道
  • 2026年6月最新版永州正规房屋漏水防水补漏维修口碑名单:创维修缮机构等5家深度测评 - 一休咨询
  • 别再死磕EKF了!聊聊ESKF:一种更优雅、更省算力的IMU融合方案
  • 快手怎么去水印?2026实测避坑指南 - 科技热点发布