TT Bigdata TT Bigdata
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装教程
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)

JaneTTR

数据酿造智慧,每一滴都是沉淀!
首页
  • 部署专题

    • 常规安装
    • 一键部署
  • 组件专题

    • 安装教程
    • 魔改分享
  • 版本专题

    • 更新说明
    • BUG临时处理
  • Ambari-Env

    • 环境准备
    • 开始使用
  • 组件编译

    • 专区—Ambari
    • 专区—Bigtop-官方组件
    • 专区—Bigtop-扩展组件
  • 报错解决

    • 专区—Ambari
    • 专区—Bigtop
  • 其他技巧

    • APT仓库增量更新
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL快速安装
    • Temurin JDK 23快速安装
  • 成神之路

    • 专区—Ambari
    • 专区—Ambari-Metrics
    • 专区—Bigtop
  • 集成案例

    • Redis集成教学
    • Dolphin集成教学
    • Doris集成教学
    • 持续整理...
  • 核心代码

    • 各组件代码
    • 通用代码模板
  • 国产化&其他系统

    • Rocky系列
    • Ubuntu系列
  • Grafana监控方案

    • Ambari-Metrics插件
    • Infinity插件
  • 支持&共建

    • 蓝图愿景
    • 合作共建
登陆
GitHub (opens new window)
  • Ambari-Env

  • 组件编译

  • 报错解决

  • 其他技巧

    • APT仓库增量更新
      • 背景问题
      • 方案思路
        • 1. 安装依赖
        • 2. 创建缓存目录
        • 3. 执行增量生成
      • 对比测试
    • Maven镜像加速
    • Gradle镜像加速
    • Bower镜像加速
    • 虚拟环境思路
    • R环境安装+一键安装脚本
    • Ivy配置私有镜像仓库
    • Node.js 多版本共存方案
    • Ambari Web本地启动
    • Npm镜像加速
    • PostgreSQL 快速安装
    • Temurin JDK 23快速安装
  • 二次开发
  • 其他技巧
JaneTTR
2025-08-15
目录

APT仓库增量更新

# 背景问题 性能瓶颈

在维护私有 APT 仓库时,如果直接使用:

dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
1

问题说明

这种方式每次都会 全量扫描 目录,即便只新增一个 .deb,依旧会解析所有文件。 当包数量达到数百甚至上千时,全量构建一次需要 3~6 分钟,严重拖慢构建和发布流程。

我们希望能像 createrepo --update 一样 增量打包,只处理有变化的包。

# 方案思路 推荐方案

使用 apt-ftparchive + 缓存文件,依靠其内置的状态数据库,跳过无变化文件,从而减少生成时间。 再结合 pigz 多核压缩,大幅提升效率。

# 1. 安装依赖

sudo apt update
sudo apt install pigz
sudo apt install --reinstall apt-utils

# 验证工具可用性
dpkg -L apt-utils | grep apt-ftparchive
which apt-ftparchive && apt-ftparchive --version
1
2
3
4
5
6
7

性能优化

pigz 会根据 $(nproc) 自动启用多核压缩,通常能将 gzip 耗时降低到原来的 30%~50%。

# 2. 创建缓存目录

mkdir -p /data/modules/.cache
1

缓存数据库(如 cache.db)会记录 .deb 包的状态信息。

# 3. 执行增量生成

cd /data/modules

apt-ftparchive -c=/dev/null packages . \
    --db /data/modules/.cache/cache.db \
    | pigz -9 -p $(nproc) > Packages.gz
1
2
3
4
5

参数说明

  • -c=/dev/null:忽略全局配置,按当前目录扫描
  • --db:指定缓存数据库路径
  • pigz:使用多核压缩输出结果

注意

首次运行会全量扫描生成缓存,从第二次开始才有明显的增量加速效果。

# 对比测试

场景 工具组合 耗时(包数≈2000)
全量扫描(旧法) dpkg-scanpackages + gzip 3~6 分钟
增量更新(新法) apt-ftparchive + pigz + 缓存 20~30 秒
#APT#apt-ftparchive#仓库优化#增量打包#环境准备
专区—Bigtop
Maven镜像加速

← 专区—Bigtop Maven镜像加速→

最近更新
01
[/metrics/metadata] — 元数据查询和使用 GET
09-12
02
[/metrics/metadata] — 请求完整链路解读
09-12
03
[/metrics/metadata] — 缓存数据装载 Phoenix
09-12
更多文章>
Theme by Vdoing | Copyright © 2017-2025 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式