Ubuntu22.04 搭建离线APT源(apt-mirror)

1、应用场景

目前需要在Linux环境下做UE开发,Ubuntu版本使用的是22.04。项目现场是没法连到外网的,所以安装库十分不方便,所以需要搭建一套内网的离线APT源。

2、搭建步骤

2.1 资源拉取

首先需要在联网机器上将资源拉取到本地。

本教程使用使用apt-mirror拉取镜像源,使用nginx作为源文件服务器。

安装命令:

sudo apt-get install -y apt-mirror

apt-get install -y nginx

在使用apt-mirror之前,为了加速拉取镜像源的速度,建议将apt-mirror拉取的镜像源换成阿里云的镜像源,apt-mirror的配置文件在 /etc/apt/mirror.list,22.04可以参考如下的配置:

############# 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 ##############

deb http://mirrors.aliyun.com/ubuntu jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu jammy-backports main restricted universe multiverse
#deb http://mirrors.aliyun.com/ubuntu jammy-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu jammy-backports main restricted universe multiverse
#deb-src http://mirrors.aliyun.com/ubuntu jammy-proposed main restricted universe multiverse

clean http://mirrors.aliyun.com/ubuntu

配置好之后使用下面的命令拉取镜像源:

apt-mirror

拉取过程很漫长,我等了差不多7个小时,占用资源大小620GB左右。

Tips: 我第一次进行测试时,发现默认拉取的资源还不够,在其他机器上拉取镜像源时会有报错提示缺少icon之类的资源,这里有一个脚本文件,用来下载额外的数据:

cd /var/spool/apt-mirror/mirror/mirrors.aliyun.com/ubuntu/dists

for dist in jammy jammy-backports jammy-security jammy-updates; do
  for comp in main  multiverse  universe restricted; do
    for size in 48 64 128; do
    wget http://archive.ubuntu.com/ubuntu/dists/${dist}/${comp}/dep11/icons-${size}x${size}@2.tar.gz -O ${dist}/${comp}/dep11/icons-${size}x${size}@2.tar.gz;
   done
 done
done

for dist in jammy jammy-backports jammy-security jammy-updates; do
  for comp in main  multiverse  universe restricted; do
    if [ ! -d "${dist}/${comp}/binary-i386" ]; then
        mkdir -p "${dist}/${comp}/binary-i386"
        echo "目录 ${dist}/${comp}/binary-i386 已创建。"
    else
        echo "目录 ${dist}/${comp}/binary-i386 已存在。"
    fi
    wget http://archive.ubuntu.com/ubuntu/dists/${dist}/${comp}/binary-i386/Packages.gz -O ${dist}/${comp}/binary-i386/Packages.gz;
 done
done

2.2 镜像源开放

接下来,如果是测试的话我们可以直接在联网机器使用nginx开放镜像源数据,如果是内网离线环境,需要物理拷贝到离线机器上执行下列操作。如果离线机器上没有安装nginx,需要手动下载nginx的deb进行安装,将所有依赖的deb包拷贝到离线机器某个文件夹中,然后运行下面的命令进行安装:

sudo dpkg -i *.deb

在配置nginx之前,可以先使用下面的命令进行文件夹挂载,方便后面的文件管理:

ln -s /var/spool/apt-mirror/mirror/mirrors.aliyun.com/ubuntu /home/user/nginx_data/public

在/etc/nginx/nginx.conf中配置服务参数:

user root;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;# 重要
	tcp_nopush on;
	types_hash_max_size 2048;
	# server_tokens off;
	autoindex on;# 重要
	autoindex_exact_size off;# 重要
	autoindex_localtime on;# 重要

	server {
    		listen       9101 default_server;# 重要
        	listen       [::]:9101 default_server;# 重要
    		server_name localhost;# 重要,也可以配置为具体的ip地址
		location / {
		    root /home/user/nginx_data/public; # 配置的挂载地址
		    index index.html index.htm index.nginx-debian.html
		    charset utf-8;
		}
	}

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# SSL Settings
	##

	ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
	ssl_prefer_server_ciphers on;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

配置好后需要运行下面的命令重启nginx:

systemctl restart nginx

成功后可以在浏览器中看到对应的文件列表:

2.3 镜像源拉取

在配置文件/etc/apt/sources.list 中,将其中的源地址替换为刚才nginx配置的地址: http://ip:port/ubuntu。
然后使用下面命令更新镜像源信息:

sudo apt update

更新之后就可以愉快的进行安装啦, 试一下:

apt-get install -y clang

3、转载至

Ubuntu22.04搭建离线APT源

posted @   *一炁化三清*  阅读(289)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
历史上的今天:
2024-02-11 Linux之bond和team
点击右上角即可分享
微信分享提示