使用apt-mirror搭建内网Ubuntu APT源同步阿里A
背景:
因从内网环境无法从外网获取安装包,所以需要搭建内网Apt源同步阿里云Apt源环境:
内网Apt源服务器:192.168.33.150
Ubuntu版本:22.04
apt-mirror版本:0.5.4-1
nginx版本:1.20.1apt-mirror不仅可以处理Ubuntu的软件源,几乎debian系的都可以使用apt-mirror来同步。
内网Apt源服务器配置
安装apt-mirror同步工具
首先要确认内网Apt源服务器(192.168.33.150)是否可正常与其配置的源地址相通
# 安装apt-mirror同步工具
sudo apt-get install -y apt-mirror
获取阿里云Ubuntu源配置
我们通过阿里云镜像源来获取相关的镜像源的配置,如下所示(Ubuntu20.04):
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
# deb https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
其中deb-src
为源码包,如果不需要可以只使用deb。
注意:Ubuntu各个版本使用的源配置是不一致的,主要是deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
中的focal
版本区别,其对应关系如下所示(只是一部分)
22.04 - Jammy
21.10 - Impish
21.04 - Hirsute
20.10 - Groovy
20.04 LTS - Focal
19.10 - Eoan
19.04 - Disco
18.10 - Cosmic
18.04 LTS - Bionic
17.04 - Zesty
16.10 - Yakkety
16.04 LTS - Xenial
配置mirror.list配置文件
(配置文件详解在文后)配置文件几乎不用修改,
############# config ##################
#
# set base_path /var/spool/apt-mirror
#
# set mirror_path $base_path/mirror
# 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 ##############
# 阿里云Ubuntu的APT源
deb [arch=amd64] http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb [arch=amd64] http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb [arch=amd64] http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb [arch=amd64] http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb [arch=amd64] http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
# 下载完成后清除部分空间
clean https://mirrors.aliyun.com/ubuntu
同步阿里云Ubuntu源
运行apt-mirror
命令即可开始同步,运行时会显示源的大小,基本每个ubuntu的源都在200G左右,下载时间主要看下载速率。
apt-mirror
命令支持断点续传,不过如果是意外中断,需要删除/var/spool/apt-mirror/var
目录下的apt-mirror.lock
文件再次执行。
# 开始同步
apt-mirror
建议使用tmux
创建一个终端来同步,同步完成后,同步的软件源会存放到/var/spool/apt-mirror
目录下。
Nginx暴露Apt源
安装Nginx
apt-get install -y nginx
配置镜像路径(随自己习惯,创不创建都可以,nginx配置文件中的路径需要指定到源路径)
# 创建路径
mkdir -p /data/public
# 创建软链
ln -s /var/spool/apt-mirror/mirror/mirrors.aliyun.com/ubuntu /data/pubilc/ubuntu
配置Nginx配置文件
# /etc/nginx/nginx.conf
http {
...
sendfile on; # 开启高效文件传输模式
server {
location / {
autoindex on; # 开启目录浏览模式
root /data/public;
index index.html index.htm;
}
....
}
}
在/data/public
中创建index.html
文件,用于访问(此处不赘述,可以网上找或者不配置)
启动Nginx,从浏览器访问192.168.33.150/ubuntu
客户端配置
备份原有源配置文件,将地址换成Apt内网源服务器地址
# 备份
cp -a /etc/apt/source.list /etc/apt/source.list.bak
# 修改,将/etc/apt/source.list中的内容替换为以下
deb [arch=amd64] http://192.168.33.150/ubuntu/ jammy main restricted universe multiverse
deb [arch=amd64] http://192.168.33.150/ubuntu/ jammy-security main restricted universe multiverse
deb [arch=amd64] http://192.168.33.150/ubuntu/ jammy-updates main restricted universe multiverse
deb [arch=amd64] http://192.168.33.150/ubuntu/ jammy-proposed main restricted universe multiverse
deb [arch=amd64] http://192.168.33.150/ubuntu/ jammy-backports main restricted universe multiverse
配置完成后不要忘记更新apt-get update
mirror.list配置文件详解
############# config ##################
#
# 配置数据基目录(可以修改为自己需要保存的位置)
# set base_path /var/spool/apt-mirror
# 配置镜像存储位置
# set mirror_path $base_path/mirror
# 配置临时下载索引位置
# set skel_path $base_path/skel
# 配置日子,URLs和MD5校验信息存储位置
# set var_path $base_path/var
# 配置删除过期源脚本位置(默认不删除,方便安装旧版本软件)
# set cleanscript $var_path/clean.sh
# 设置默认架构, 可填: amd64 或 i386,默认是和本机一个架构
# set defaultarch <running host architecture>
#
# 设定下载后运行的脚本位置
# set postmirror_script $var_path/postmirror.sh
# 设置是否执行 下载后的脚本操作,默认是1(但是默认没有postmirror.sh脚本)
# set run_postmirror 0
# 设置下载线程数
set nthreads 20
# 是否替换URL中的波浪线,替换成%7E(HTML代码),否则会跳过不进行下载
set _tilde 0
#
############# end config ##############
# 配置Ubuntu jammy 源
deb [arch=amd64] http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb [arch=amd64] http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb [arch=amd64] http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb [arch=amd64] http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb [arch=amd64] http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
# 下载完成后清除部分空间
clean http://mirrors.aliyun.com/ubuntu/