Apt-mirror获取Ubuntu20.04时的问题

2021-04-12   752 次阅读


背景

最近开始在断网的情况下进行开发和系统部署,安装Ubuntu还好,毕竟已经有了用优盘安装系统的经验,但是安装后续软件就麻烦多了,毕竟从外网一个个导安装包就很烦的,而且还需要安装多台机器,包括实体机和虚拟机等,于是就有了一个想法,在内网自己搞一台ubuntu的镜像服务器。

这个想法的可行性还是蛮高的,而且网上很多例子,最简单的就是利用apt-mirror这个工具创建镜像。apt-mirror实际上是一个脚本(perl写的),本质上行就是连接服务器下载全部的文档。

创建镜像文件夹

首先要做的就是把Ubuntu仓库里的所有文件拉下来。此时需要准备一个目录,该目录唯一的要求就是要有足够的空闲空间,如果镜像的版本单一而且不包括源文件的话,大概有100个G的空间就够了。

然后安装apt-mirror,修改apt-mirror的配置文件。可通过apt安装apt-mirror,其默认配置文件在/etc/apt/mirror.list中,用常用的编辑工具打开编辑即可。主要需要修改的参数为:

base_path: 存放镜像文件的目录;
defaultarch:Ubuntu的文件类型,默认为当前计算机的,一般是amd64。

下面需要修改的就是下载Ubuntu的版本号,例如20.04版本号是focal,那就得将原来的版本号都改为focal。为了节省空间,建议不下源文件。

其它默认即可。然后执行命令开始下载数据文件。

sudo apt-mirror

然后耐心等待。

20.04版本存在的问题

经过上面的方法下载下来的就是一个完整的Ubuntu镜像系统,但是对于20.04版本的Ubuntu而言,由于apt-mirror没有跟得上Ubuntu版本的更新速度,所以下载下来的镜像是不完整的,少了个关键的文件,即/cnf/Commands-amd64.xz。可能是apt-mirror不知道20.04多了个这么个文件,解决方法是修改apt-mirror的脚本,在第450行增加一句:

add_url_to_download( $url . $_ . "/cnf/Commands-" . $arch . ".xz" )

然后重新执行apt-mirror即可。希望以后apt-mirror升级后能改掉这个bug。

后续工作

镜像做好后,要么将镜像路径加入到sources.list,要么自己配一台Web Server将镜像放在网上。一般情况下都是后者,这个可以用nginx或者apache实现。

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

No PAINS No GAINS.