编辑
2025-03-03
工作知识
0
请注意,本文编写于 95 天前,最后修改于 95 天前,其中某些信息可能已经过时。

目录

一、准备外网源环境
1.1 搭建外网访问网页服务
1.2 创建软件源仓库文件夹
二、准备内网环境
2.1 制作要上传的软件包镜像
2.1 定时同步软件镜像源
三、把软件源从本地同步到外网仓库
3.1 同步
3.2 实时同步

外网源能够让客户使用apt或yum命令一键安装我们制作的软件包,不需要手动解决繁琐的依赖问题。本文将介绍如何简单快速的搭建一个apt外网源。

一、准备外网源环境

1.1 搭建外网访问网页服务

因为需要通过外网访问,所以我们需要一个能联通到外网的服务器。目前市面上比较常见的有腾讯云、阿里云等,我们这里使用公司购买的阿里云服务器(公网ip为47.92.75.45)。

通过ssh登录上去之后,发现我们之前的同事已经通过apache服务搭建了一个后端代理服务器,所以我们本文就不多介绍代理服务器如何搭建,可以自行百度tomcat(或其他后端软件)服务器搭建教程。

这时我们通过在网页输入外网ip,就可以看到如下的网页

image.png

这时我们是通过ip去访问的网页,通过域名访问还需要我们去购买域名并绑定ip,这个步骤就不多做解释。公司已经购买了域名,所以我们也可以通过域名访问这个网页

image.png

1.2 创建软件源仓库文件夹

随后我们进入服务器默认的一个文件夹可以看到

image.png

因此可以在网页上看到对应的文件信息

image.png

所以我们需要先在外网服务器上创建一个文件夹来存放我们的软件镜像仓库

image.png

创建之后网页上也会出现对应的文件夹(由于后端软件不同,可能部分软件需要重启一下服务才能看到所做的改动)

image.png

此时,外网源服务器上的工作就告一段落,我们在外网源服务器上面创建了一个用于外网用户访问的路径,后面将会把软件源镜像放入这个路径中。

二、准备内网环境

2.1 制作要上传的软件包镜像

我们可以通过apt-mirror工具制作我们需要的软件源镜像。首先下载apt-mirror软件

image.png

然后配置/etc/apt/mirror.list文件

image.png

随后使用apt-mirror命令即可拉去镜像到默认文件夹中

image.png

我们可以在默认路径中看到已经下载好的软件镜像文件

image.png

到此,我们就制作好了需要的软件源镜像

2.1 定时同步软件镜像源

由于我们不停地在更新软件包,所以可以通过定时任务去同步软件源上的更新到镜像中,这里我们可以使用crontab工具,下面简单介绍crontab软件的用法

编辑/etc/crontab 将你想要执行的脚本按照提示给的格式匹配即可

image.png

这里我们添加了最后一行,意思是在每天的凌晨1点,执行apt-mirror命令,更新软件源镜像

三、把软件源从本地同步到外网仓库

3.1 同步

我们使用rsync命令同步软件源镜像,将我们的镜像文件夹同步到外网服务器上我们创建的文件夹中

image.png

这时,我们刷新网页就可以看到两个软件源的文件夹

image.png

此时,我们只需要将 deb [trusted=yes] http://download.cs2c.com.cn/kylin/rk3399/3399-base-components/kylin-desktop/ 10.1 main 加入到/etc/apt/sources.list,update后即可下载软件源中的软件包。

注意必须要加入[trusted=yes]选项,如果不加则会出现gpg密钥验证错误的问题。这是由于我们的服务器密钥没有被添加到我们本地需要安装软件包机器的密钥列表中,长沙外网源是通过kylin-keyring软件包将密钥添加到系统当中的,我们目前通过添加信任即可。

更新:可以通过 gpg -o public-file.key --export keyId 命令将外网源服务器的gpg密钥导出到public-file.key文件,然后将这个文件拷贝到你要装软件包的机器上 /etc/apt/trusted.gpg.d/ 路径下即可,这样就不需要添加 [trusted=yes] 选项了。

keyId是通过 gpg --gen-key 命令生成,已经生成的可以通过 gpg --list-keys 命令查看当前环境的gpg key。

同时还需要在外网源服务器生成InRelease文件去验证gpg密钥,命令是 gpg --clearsign --no-tty --batch --personal-digest-preferences SHA256 -o InRelease Release 密码是gpg --gen-key生成的密码。

3.2 实时同步

我们也可以把rsync加入到crontab中,每天或每周定时同步外网的软件源镜像。这里由于需要同时连接内网和外网不安全,所以就不使用定时同步。