debian 本地源搭建教程,Debian 系统配置本地软件源方法

多台机器反复从公网拉取几百兆软件包,或是在内网离线环境安装软件,本地源基本是最合适的方案。搭建方式不止一种,选型看你的使用场景:是在局域网同步完整官方仓库,还是临时挂载ISO文件使用。

整仓镜像这条路

apt-mirror是很常用的工具,作用就是按你指定范围把远程仓库同步到本地磁盘,本机或者局域网其他机器可以通过file://或者HTTP访问这份副本。安装命令很简单,sudo apt install apt-mirror。

配置文件路径 /etc/apt/mirror.list。文件格式和sources.list相近,额外带有一组以set开头的全局参数。base_path设置镜像存储目录,默认 /var/spool/apt-mirror/mirror。下方deb行指定要同步的源、发行版和组件。举个例子,同步Debian 12的main和contrib组件:

debian 本地源搭建教程,Debian 系统配置本地软件源方法

deb mirror://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free deb mirror://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free

这里有个容易踩坑的地方,存储空间规划。Debian单amd64架构完整发行版加上updates、security,bookworm版本大概占用60到80 GB。如果同步deb-src源码包,容量会翻倍。绝大多数场景不需要源码包,直接注释掉deb-src行。

配置完成执行 sudo apt-mirror,开始下载。首次同步耗时很长,取决于带宽和镜像站速度。国内用中科大或者阿里云镜像源速度会更快。想要每天自动更新,取消 /etc/cron.d/apt-mirror 内cron行注释即可。

同步完成后,修改 /etc/apt/sources.list,把远程地址替换成 file:///var/spool/apt-mirror/mirror/mirrors.ustc.edu.cn/debian/,路径要和实际镜像目录匹配。执行apt update,无报错就代表本地源生效。局域网其他机器使用,在同步主机部署nginx,把镜像目录设为站点根目录,其他机器sources.list填写 deb http://同步机IP/debian/ bookworm main。

ISO挂载,最省事的一种

手里有安装镜像,没必要同步完整仓库。挂载ISO,把它当作光盘源使用,五分钟就能配置完成。

先新建挂载目录,sudo mkdir -p /mnt/iso,执行 sudo mount -o loop /path/to/debian.iso /mnt/iso。之后在sources.list添加一行 deb file:/mnt/iso/ bookworm main,bookworm替换成对应发行版代号。运行apt update,如果提示“Release file 未签名”,在deb后面加上 [trusted=yes],让apt跳过GPG签名校验。本地挂载ISO属于可信文件,可以加这个参数,但不要对远程HTTP源这么操作。

ISO方式有明显短板:安装镜像内只包含基础软件包,bookworm-updates和bookworm-security内的包不在其中。所以挂载ISO只能满足部署基础系统、少量补充工具的需求,不能做完整版本升级。另外重启之后挂载会失效。想要开机自动挂载,编辑 /etc/fstab,添加一行 /path/to/debian.iso /mnt/iso udf,iso9660 user,loop 0 0。路径包含空格时记得加引号包裹。

自己攒一个仓库

还有一种场景:手上有一堆独立.deb文件,不是从官方仓库同步,比如自行编译或是别处收集的安装包。这时要用dpkg-scanpackages手动生成仓库索引。

把所有deb文件放到同一个目录,比如 /opt/myrepo,执行 dpkg-scanpackages /opt/myrepo /dev/null | gzip -9c > /opt/myrepo/Packages.gz。这条命令扫描目录内全部deb包,生成Packages.gz索引文件。之后sources.list填写 deb [trusted=yes] file:/opt/myrepo ./,末尾./不能省略。手动仓库不存在Release和InRelease文件,所以必须加上[trusted=yes]。安装时apt读取Packages.gz内元数据,检索到包就能安装。

几个实际会碰到的麻烦

apt update报GPG错误是高频问题。如果把远程仓库镜像同步到本地,但没有把对应签名密钥导入目标机器keyring,apt会拒绝信任源。解决办法是在同步主机导出仓库GPG公钥,拷贝到目标机器执行 sudo apt-key add导入。如果只是内部测试环境,可直接用[trusted=yes]绕过签名校验,但生产环境不推荐这么做。

另一个问题是依赖缺失。无论哪种本地源,只包含你同步或者收集的包。如果某个软件依赖的库不在仓库内,apt install会提示无法满足依赖关系。整仓镜像基本不会遇到这个问题,ISO和手动自建仓库经常需要额外补包。碰到这类情况,先在有网络的机器用 apt download下载缺失包,放到仓库目录,重新生成索引,再执行update。

免责声明:本文提供的方法与建议仅供技术参考,实际部署效果受机房环境、运营商线路、系统配置等多重因素影响。请在专业人员指导下操作,因自行操作导致的业务损失本站不承担责任。