编程开发收藏

使用apt-mirror搭建内网Ubuntu APT源同步阿里A

2023-03-22  本文已影响0人  A二十一画

背景:
因从内网环境无法从外网获取安装包,所以需要搭建内网Apt源同步阿里云Apt源

环境:
内网Apt源服务器:192.168.33.150
Ubuntu版本:22.04
apt-mirror版本:0.5.4-1
nginx版本:1.20.1

apt-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/
上一篇下一篇

猜你喜欢

热点阅读