🚥实践指南-018-创建本地源

type
status
date
slug
summary
tags
category
icon
password
测试环境为 Ubuntu 20.04,使用 apt-mirror 构建 Ubuntu 本地软件源,使用 reposync 构建 CentOS 本地软件源。

1. 简单构建

场景:现有两台电脑 A 和 B,软件包版本一致,其中 A 可以连接外网,B 不可以。要求制作本地源可以让 B 在离线情况下安装软件。会出现的问题:从 Ubuntu16.04 开始,在安装软件源的时候,强制性的要求 gpg 对 Release 文件签名,否则无法使用。

1.1. 生成秘钥

安装签名用到的软件包。
创建密钥的过程中,需要有足够的随机数,可先行使用 rng-tools 工具常驻后台的方式生成随机数,避免 gpg 密钥创建过程中长时间的等待。
生成公钥和私钥,这里是可以根据自己项目需求,选择不同的加密方法,默认直接回车,中括号内为交互操作。
结束之后,使用如下命令查看生成结果:

1.2. 导出公钥与私钥

创建 Ubuntu 目录,将软件包放置在其中。如果是少量安装包,直接放到一个文件夹中即可。如果是大量的软件包,建议按照源码包首字母,源码包名排列。以 vim 包举例,目录结构如下:
生成描述文件生成过程如下:
将制作好的本地源压缩,并连同公钥 test.pub 文件一起通过硬盘挂载、内网传输等方法,转移到需要离线使用的机器中。

1.3. 使用本地源

添加公钥。
解压本地源。
创建 sources.list 文件并编辑。
更新软件源。
更新软件源。

2. 完整构建

2.1. 构建 Ubuntu 本地源

编辑 /etc/apt/mirror.list 文件,此处使用阿里云镜像作为同步站点,也可以选择网易开源镜像、腾讯云开源镜像、清华开源镜像或者其他大学开源镜像。请确认预留有足够的空间,此处建议使用 LVM 的方式,方便进行扩容。
保存配置后,确认目标路径已经存在,并使用命令进行同步。具体花费时间,依据网速而定,某些站点甚至会限制网速。

2.2. 构建 CentOS 本地源

创建 /opt/mirrors/CentOS-local-7.repo 配置文件,添加远程软件仓库的地址。这里使用清华大学开源软件镜像站
为了避免不必要的问题,此处不作 gpg 校验。
创建同步文件夹,开始同步。

2.3. WEB服务

安装 Apach2 或 Nginx。
创建超链接。

2.3.1. Apach2

Apach 默认的文件也在 /var/www/html 下,所以如果已经将包下载到此处,直接通过网络访问即可。如果想要修改默认位置,请查看 Apach 手册。

2.3.2. Nginx

安装完 Nginx 后,编辑 /etc/nginx/sites-available/default 配置文件,开启目录浏览:
然后重启 Nginx。

2.3.3. 使用方法

如果是本机访问,可以将 IP 地址换成相应的文件地址,file:///opt/mirrors/ubuntu/。创建 /etc/apt/sources.list,需要确保网络与防火墙正常通过。
之后执行命令,重建索引即可。

2.4. 定时任务

使用 crontab 计划任务,定时同步更新。

2.5. 错误处理

  1. cnf 没有同步
修改 /usr/bin/apt-mirror 第 450 行,添加:
再次执行 apt-mirror 即可。
  1. 出现无法信任的源地址。
需要添加 apt-key,然后重新 update 。
中年码农的困境log-001-我与计算机