ubuntu创建apt-mirror本地仓库

首先创建apt-mirror的服务端,也就是存储所有apt-get下载的文件和依赖。大约需要300G,预留400G左右空间就可以开始了。

安装ubuntu省略,用的是ubuntu202204

ubuntu挂载硬盘(不需要的可以跳过):

复制代码
#下载挂载工具
sudo apt-get install nfs-3g

#查看空间大小,比照大小找到你的加的400G以上的硬盘
#df -lh

#创建一个挂载目录
mkdir /data1

#挂载
mount -t ntfs-3g /"df -lh命令找到的磁盘目录" /data1

#然后cd 到 / 目录,你就可以看到你新加的硬盘/data1了 

正式开始

一、服务端

1、安装插件

apt-mirror用于下载源并保存;nginx用于开启服务,让apt后续配置sources.list文件的地址可以找到。

复制代码
sudo apt-get install apt-mirror
sudo apt-get install nginx

2、创建apt-miror存储目录

在刚刚挂载的硬盘中创建源存储目录:

复制代码
#如果你是按照上述把新硬盘挂载在了/data1,那就进入/data1创建这个文件夹,后续所有涉及目录的地方也要加上/data1,后面出现的地方我会提示
mkdir /linoxide

3、修改apt-mirror配置文件

第一个配置是修改下载目录和下载的源

复制代码
vi /etc/apt/mirror.list

############# config ##################
#
#数据基目录,此处看你的环境是否需要改为/data1/linoxide
set base_path    /linoxide
#
# 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 https://mirror.sjtu.edu.cn/ubuntu jammy main restricted universe multiverse
deb https://mirror.sjtu.edu.cn/ubuntu jammy-security main restricted universe multiverse
deb https://mirror.sjtu.edu.cn/ubuntu jammy-updates main restricted universe multiverse
deb https://mirror.sjtu.edu.cn/ubuntu jammy-proposed main restricted universe multiverse
deb https://mirror.sjtu.edu.cn/ubuntu jammy-backports main restricted universe multiverse
deb-src https://mirror.sjtu.edu.cn/ubuntu jammy main restricted universe multiverse
deb-src https://mirror.sjtu.edu.cn/ubuntu jammy-security main restricted universe multiverse
deb-src https://mirror.sjtu.edu.cn/ubuntu jammy-updates main restricted universe multiverse
deb-src https://mirror.sjtu.edu.cn/ubuntu jammy-proposed main restricted universe multiverse
deb-src https://mirror.sjtu.edu.cn/ubuntu jammy-backports main restricted universe multiverse
#这个脚本会清除上游服务器废弃的包的
clean https://mirror.sjtu.edu.cn/ubuntu

记得保存

第二个配置是让apt-mirror识别到cnf文件并下载同步(其实下载完成后不只是缺cnf,但是只加上cnf就可以了。后续追求完美看看apt update的时候缺什么可以加一下)

复制代码
vi /usr/bin/apt-mirror

add_url_to_download( $url . $_ . "/binary-" . $arch . "/Packages.bz2" );
add_url_to_download( $url . $_ . "/binary-" . $arch . "/Packages.xz" );
#差不多在450行左右加入下面这一句
add_url_to_download( $url . $_ . "/cnf/Commands-" . $arch . ".xz" );
add_url_to_download( $url . $_ . "/i18n/Index" );

记得保存

【vi不好用可以用nano编辑】

4、开始下载

直接运行指令:

复制代码
sudo apt-mirror

可能需要很长时间,等待下载就可以了,下载完成差不多是这个样子

下载完的目录内容是三个文件

mirror文件就是主要内容了

5、替换文件

将/mirror/mirror.sjtu.edu.cn/ubuntu目录下的的dists文件替换为/skel/mirror.sjtu.edu.cn/ubuntu目录下的dists文件

否则配置sources.list后每次apt-install都会显示无法找到下载文件。

6、固定IP

固定服务端也就是下载好apt-mirror的电脑IP

复制代码
apt-get install net-tools
ifconfig
复制代码
#ubuntu202204是这个,老版本好像不太一样
cd /etc/netplan
vi 01-network-manager-all.yaml

network:
  ethernets:
    #换成你ifconfig看到的决定ip的网口,我这里是叫enp2s0
    enp2s0:
      dhcp4: false
      #保证端口号别被占用
      addresses: [192.168.1.166/24]
      gateway4: 192.168.1.1
      optional: true
      nameservers:
        addresses: [144.144.144.144, 8.8.8.8]
  version: 2

记得保存,然后生效一下

复制代码
sudo netplan apply

然后再ifconfig看看ip是否生效,再打开ubuntu自动安装的火狐看看有没有网络

7、挂载源文件

纯粹为了方便管理

复制代码
#看你的磁盘情况是/data1/linoxide还是/linoxide
sudo ln -s /linoxide /packages/apt-mirror

8、开放apt-mirror文件服务

这里要用到第一步中下载的nginx

复制代码
sudo vi /etc/nginx/sites-available/default


server {
    #保证80别被占用,占用了用别的端口号也行,但是后面客户端源端口要改
	listen 80 default_server;
	listen [::]:80 default_server;
	root /var/www/html;
	index index.html index.htm index.nginx-debian.html
	server_name loaclhost;
        autoindex on;
	location / {
                index index.html index.htm;
                #当然你也可以绑定的深一点,然后apt配置文件直接加/ubuntu
                root /packages;
		try_files $uri $uri/ =404;
	}
}

记得保存,然后生效一下

复制代码
sudo service nginx restart

然后打开网站就可以看到:

进入我们的关键目录看一看

服务端配置完成,服务端就可以不需要网络了。

如果是有网络环境可以定时执行sudo apt-mirror更新源,也可以写一个脚本定时更新。

二、客户端

客户端要和服务端同一网段,我上面服务端是192.168.1.166,客户端也要在192.168.1下。客户端也随便固定个ip就可以了。

1、更改apt源

复制代码
sudo vi /etc/apt/sources.list

模拟环境是客户端没有网络,所以其他源也请求不到了,只能请求到新的服务端的源,所以文件内之前的内容全部注释或者删掉都可以。

文件内写入下面几行:

复制代码
#下面的192.168.1.166换成你设置的服务端IP
#地址也是,nginx可以绑定更深层,这里也就可以少写了
deb [arch=amd64] http://192.168.1.166/apt-mirror/mirror/mirror.sjtu.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb [arch=amd64] http://192.168.1.166/apt-mirror/mirror/mirror.sjtu.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb [arch=amd64] http://192.168.1.166/apt-mirror/mirror/mirror.sjtu.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse 
deb [arch=amd64] http://192.168.1.166/apt-mirror/mirror/mirror.sjtu.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb [arch=amd64] http://192.168.1.166/apt-mirror/mirror/mirror.sjtu.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse    

记得保存,然后生效一下

复制代码
sudo apt-get update

等待执行完成

2、验证

复制代码
sudo apt-get install apache2

如果下载成功,看一下下载的源是什么地方,如果是刚才配置的服务器,那就是成功了。

复制代码
sudo apt policy apache2
相关推荐
wanhengidc28 分钟前
云手机的硬件依赖性如何?
运维·服务器·智能手机·云计算
piaoroumi33 分钟前
UVC调试
linux·运维·前端
VekiSon39 分钟前
Linux系统编程——标准IO
linux·运维·服务器
Evan芙1 小时前
DNS服务器类型,解析答案,正反解析域,资源记录定义总结
运维·服务器
wanhengidc1 小时前
巨椰 云手机办公便利性高
运维·服务器·安全·智能手机·云计算
Saniffer_SH1 小时前
【每日一题】PCIe答疑 - 接大量 GPU 时主板不认设备或无法启动和MMIO的可能关系?
运维·服务器·网络·人工智能·驱动开发·fpga开发·硬件工程
爱宇阳2 小时前
Linux 安全加固:禁用 IPv4 ICMP 重定向发送
linux·运维·安全
Saniffer_SH2 小时前
【每日一题】讲讲PCIe链路训练和枚举的前后关系
运维·服务器·网络·数据库·驱动开发·fpga开发·硬件工程
阿豪学编程2 小时前
动静态库制作与原理
linux·个人开发
2401_861786182 小时前
linux修改ip地址(有详细步骤)kali
linux·运维·服务器