TT Bigdata TT Bigdata
首页
GitHub (opens new window)
JaneTTR

JaneTTR

数据酿造智慧,每一滴都是沉淀!
  • 开发环境

  • Ambari 编译

  • Bigtop 编译

    • 官方组件编译
    • 扩展组件编译
    • 快速开始

    • 工具与镜像

      • Ivy配置私有镜像仓库
      • APT仓库增量更新
        • 背景问题
        • 方案思路
          • 1. 安装依赖
          • 2. 创建缓存目录
          • 3. 执行增量生成
        • 对比测试
      • Temurin JDK 23快速安装
  • Ambari 源码编译

  • 前端开发

  • 后端开发

  • 官方组件编译

  • 扩展组件编译

  • 源码编译
  • Bigtop 编译
  • 工具与镜像
JaneTTR
2025-08-15
目录
背景问题
方案思路
1. 安装依赖
2. 创建缓存目录
3. 执行增量生成
对比测试

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 秒
#镜像加速#环境准备
Ivy配置私有镜像仓库
Temurin JDK 23快速安装

← Ivy配置私有镜像仓库 Temurin JDK 23快速安装→

最近更新
01
当前版本 2026/08
08-29
02
把 Ambari Server HA 稳稳地跑起来
08-17
03
从一次启用操作追到主备就绪
08-17
更多文章>
Theme by Vdoing | Copyright © 2017-2026 JaneTTR | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式