Linux之apt源同步工具apt-mirror

概述

最近有个需求,需要将源中所有的包同步到本地进行分析,于是接触到了本文的主角 – apt-mirror.

apt-mirror简介

A small and efficient tool that lets you mirror a part of or the whole
Debian GNU/Linux distribution or any other apt sources.

Main features:

  • It uses a config similar to APT’s sources.list
  • It’s fully pool compliant
  • It supports multithreaded downloading
  • It supports multiple architectures at the same time
  • It can automatically remove unneeded files
  • It works well on an overloaded Internet connection
  • It never produces an inconsistent mirror including while mirroring
  • It works on all POSIX compliant systems with Perl and wget

apt-mirror是一个小型且高效的apt源同步工具,可以让你镜像部分或整个 Debian GNU/Linux 发行版或任何其他 apt 源。

它有以下主要特性:

  • 它使用类似于 APT 的 sources.list 配置文件
  • 完全符合 pool 规范
  • 支持多线程下载
  • 支持同时处理多个架构
  • 可以自动删除不需要的文件
  • 在负载过重的互联网连接上也能很好地工作
  • 在镜像过程中永远不会产生不一致的镜像
  • 在所有符合 POSIX 标准并安装了 Perl 和 wget 的系统上都能正常工作

apt-mirror的使用

安装

sudo apt install apt-mirror

按需修改配置

apt-mirror uses /etc/apt/mirror.list as a configuration file.

apt-mirror使用 /etc/apt/mirror.list 作为配置文件。
mirror.list里面主要有两大块:

  • 相关参数配置
  • 需要同步的源地址

按需修改需要同步的源地址和配置(比如同步路径,软件包架构,下载线程等):

############# config ##################
#
set base_path    /data/apt-source
#软件包存放路径
set mirror_path  $base_path/mirror
#临时索引下载文件目录,也就是存放软件仓库的dists目录下的文件
set skel_path    $base_path/skel
#日志
set var_path     $base_path/var
# set cleanscript $var_path/clean.sh

#指定默认架构
# set defaultarch  <running host architecture>

# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0

#下载线程数
set nthreads     20
set _tilde 0
#
############# end config ##############

# 下面是需要同步的源地址,按需修改即可

#deb http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu bionic-security main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu bionic-updates main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu bionic-proposed main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu bionic-backports main restricted universe multiverse

#deb-src http://archive.ubuntu.com/ubuntu bionic main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu bionic-security main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu bionic-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu bionic-proposed main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu bionic-backports main restricted universe multiverse

#clean http://archive.ubuntu.com/ubuntu

运行

直接在终端执行apt-mirror即可开始同步相应的软件包,因为一般来说软件包比较多,所以需要准备好充足的存储空间,至少几百G,保证充足的网络带宽和网络稳定性,剩下的就是耐心等待了。

sudo apt-mirror

下载途中如果中途断开只需要删除apt-mirror.lock文件即可:

sudo rm /data/apt-souce/var/apt-mirror.lock

其他

如果需要制作成内网源,只需要安装web服务器,比如 apache , 然后指向刚刚同步的源即可,这里不再赘述了。

参考