You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用reprepro搭建本地仓库冻结树莓派CM4 OS包版本?

需求可行性与配置方案

你的需求完全可行,以下是具体的分步配置方案:

一、整体思路

通过搭建本地reprepro仓库存储指定版本的软件包,结合APT代理/本地DNS重定向机制,在不修改pi-gen核心脚本的前提下,实现包版本冻结、本地缓存及可选的自动回源功能。

二、分步实现

1. 提取现有镜像包快照并导入reprepro

先从已构建好的CM4镜像中导出所有已安装包的版本信息,再拉取对应包并导入本地仓库:

  • 挂载目标镜像文件(假设镜像名为cm4-custom.img):
    mkdir -p /mnt/cm4-img
    losetup -fP cm4-custom.img
    mount /dev/loop0p2 /mnt/cm4-img
    
  • 导出已安装包的完整版本列表:
    chroot /mnt/cm4-img dpkg-query -W -f='${Package} ${Version}\n' > installed-packages.txt
    
  • 初始化reprepro仓库(假设仓库路径为/srv/reprepro/cm4):
    mkdir -p /srv/reprepro/cm4/{conf,dists,pool}
    cd /srv/reprepro/cm4
    
    创建conf/distributions配置文件(根据你使用的Raspberry Pi OS版本调整,示例为bullseye):
    Origin: Local CM4 Repo
    Label: Local-CM4
    Suite: bullseye
    Codename: bullseye
    Architectures: armhf arm64
    Components: main contrib non-free rpi
    Description: Local snapshot repo for CM4 custom OS
    
  • 批量拉取包并导入仓库:
    编写脚本循环处理包列表:
    while read pkg ver; do
      apt download ${pkg}=${ver} -o Dir::Cache::=/tmp/pkg-cache
      reprepro -b /srv/reprepro/cm4 includedeb bullseye /tmp/pkg-cache/${pkg}_${ver}_*.deb
      rm /tmp/pkg-cache/${pkg}_${ver}_*.deb
    done < installed-packages.txt
    
  • 卸载镜像:
    umount /mnt/cm4-img
    losetup -d /dev/loop0
    

2. 重定向官方仓库访问到本地reprepro

由于不能修改pi-gen核心脚本,推荐用APT代理实现重定向:

  • 安装apt-cacher-ng代理工具:
    apt install apt-cacher-ng
    
  • 修改/etc/apt-cacher-ng/acng.conf添加重定向规则:
    Remap-rpi: http://raspbian.raspberrypi.com/ file:///srv/reprepro/cm4/
    
  • 重启代理服务:
    systemctl restart apt-cacher-ng
    
  • 在pi-gen构建流程中配置APT代理(可通过自定义脚本提前设置,无需修改pi-gen核心文件):
    echo 'Acquire::http::Proxy "http://localhost:3142";' > /etc/apt/apt.conf.d/00proxy
    

3. 自动回源并留存包(可选)

若要实现本地仓库无对应包时自动从官方拉取并缓存,可配置reprepro同步上游仓库:

  • 创建conf/upstreams文件添加官方仓库信息:
    Name: rpi-official
    Suite: bullseye
    Components: main contrib non-free rpi
    Architectures: armhf arm64
    URIs: http://raspbian.raspberrypi.com/raspbian/
    
  • 修改conf/distributions,添加同步规则:
    Update: rpi-official
    
  • 执行同步命令拉取缺失包:
    reprepro -b /srv/reprepro/cm4 update bullseye
    

三、验证与维护

  • 构建前用apt update和apt install --dry-run验证包来源是否为本地仓库;
  • 选择性更新包时,手动拉取对应版本deb包,用reprepro includedeb bullseye [deb文件路径]导入仓库即可;
  • 定期备份/srv/reprepro/cm4目录,确保版本追溯的可靠性。

内容的提问来源于stack exchange,提问作者n8zrj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:53:21