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的网口,我这里是叫enp2s0enp2s0:dhcp4: false#保证端口号别被占用addresses: [192.168.1.166/24]gateway4: 192.168.1.1optional: truenameservers: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.htmlserver_name loaclhost;autoindex on;location / {index index.html index.htm;#当然你也可以绑定的深一点,然后apt配置文件直接加/ubunturoot /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

相关文章:
ubuntu创建apt-mirror本地仓库
首先创建apt-mirror的服务端,也就是存储所有apt-get下载的文件和依赖。大约需要300G,预留400G左右空间就可以开始了。 安装ubuntu省略,用的是ubuntu202204 ubuntu挂载硬盘(不需要的可以跳过): #下载挂载工具 sudo apt…...
计算机网络 internet应用 (水
ARPA net ---Internet 前身 发展史: ARPA net 第一个主干网..美国军方NSFnet 美国国家科学基金会NSFANSnet 美国全国 (internet 叫法开始出现) 第二代互联网(现在() IP地址 IP地址 最高管理机构 - InterNIC IPV4 32位 IPV6 128位 域名 起名 解析 domain name sys…...
【ChatGLM3】第三代大语言模型多GPU部署指南
关于ChatGLM3 ChatGLM3是智谱AI与清华大学KEG实验室联合发布的新一代对话预训练模型。在第二代ChatGLM的基础之上, 更强大的基础模型: ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用了更多样的训练数据、更充分的训练步数和更合理的训练策略。在语义、…...
云原生Kubernetes系列 | Docker/Kubernetes的卷管理
云原生Kubernetes系列 | Docker/Kubernetes的卷管理 1. Docker卷管理2. Kubernetes卷管理2.1. 本地存储2.1.1. emptyDir2.1.2. hostPath2.2. 网络存储2.2.1. 使用NFS2.2.2. 使用ISCSI2.3. 持久化存储2.3.1. PV和PVC2.3.2. 访问模式2.3.3. 回收策略1. Docker卷管理...
Java实现快速排序算法
快速排序算法 (1)概念:快速排序是指通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行&…...
MAC配置环境变量
1、配置 JAVA JDK 1.1、查看 JDK 安装目录 (1)可以在Android Studio中查看,复制该路径 (2)也可以在官网下载 Java JDK下载地址 mac中的安装地址是"资源库->Java->JavaVirtualMachines"中 1.2、…...
系列五、DQL
一、DQL 1.1、概述 DQL的英文全称为:Data Query Language,中文意思为:数据查询语言,用大白话讲就是查询数据。对于大多数系统来说,查询操作的频次是要远高于增删改的,当我们去访问企业官网、电商网站&…...
【智能家居】七、人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)
一、翔云 人工智能开放平台 API文档开发示例下载 二、编译openSSL支持libcurl的https访问 安装SSL依赖库openSSL(使用工具wget)libcurl库重新配置,编译,安装运行(运行需添加动态库为环境变量) 三、编程实现人脸识别 四、Base6…...
基于node 安装express后端脚手架
1.首先创建文件件 2.在文件夹内打开终端 npm init 3.安装express: npm install -g express-generator注意的地方:这个时候安装特别慢,最后导致不成功 解决方法:npm config set registry http://registry.npm.taobao.org/ 4.依次执行 npm install -g ex…...
Mrdoc知识文档
MrDoc知识文档平台是一款基于Python开发的在线文档系统,适合作为个人和中小型团队的私有云文档、云笔记和知识管理工具,致力于成为优秀的私有化在线文档部署方案。我现在主要把markdown笔记放在上面,因为平时老是需要查询一些知识点ÿ…...
C语言中getchar函数
在 C 语言中,getchar() 是一个标准库函数,用于从标准输入(通常是键盘)读取单个字符。它的函数原型如下: int getchar(void);getchar() 函数的工作原理如下: 当调用 getchar() 函数时,它会等待…...
全栈开发组合
SpringBoot是什么? SpringBoot是一个基于Spring框架的开源框架,由Pivotal团队开发。它的设计目的是用来简化Spring应用的初始搭建以及开发过程。SpringBoot提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用 Sprin…...
wpf TelerikUI使用DragDropManager
首先,我先创建事务对象ApplicationInfo,当暴露出一对属性当例子集合对于构成ListBoxes。这个类在例子中显示如下代码: public class ApplicationInfo { public Double Price { get; set; } public String IconPath { get; set; } public …...
Python+Appium自动化测试之元素等待方法与重新封装元素定位方法
在appium自动化测试脚本运行的过程中,因为网络不稳定、测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待的方法来避免这种…...
详解Maven如何打包SpringBoot工程
目录 一、spring-boot-maven-plugin详解 1、添加spring-boot-maven-plugin插件到pom.xml 2、配置主类(Main Class) 3、配置打包的JAR文件名 4、包含或排除特定的资源文件 5、指定额外的依赖项 6、配置运行参数 7、自定义插件执行阶段 二、Maven打…...
PyQt6 QFrame分割线控件
锋哥原创的PyQt6视频教程: 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计46条视频,包括:2024版 PyQt6 Python桌面开发 视频教程(无废话版…...
PostgreSql 序列
一、概述 在 PostgreSQL 中,序列用于生成唯一标识符,通常用于为表的主键列生成连续的唯一值。若目的仅是为表字段设置自增 id,可考虑序列类型来实现,可参考《PostgreSql 设置自增字段》 二、创建序列 2.1 语法 CREATE [ TEMPOR…...
【深度学习目标检测】六、基于深度学习的路标识别(python,目标检测,yolov8)
YOLOv8是一种物体检测算法,是YOLO系列算法的最新版本。 YOLO(You Only Look Once)是一种实时物体检测算法,其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化,提高了检测速度和准确性。…...
Vue3上传图片和删除图片
<div class"illness-img"><van-uploader:after-read"onAfterRead"delete"onDeleteImg"v-model"fileList"max-count"9":max-size"5 * 1024 * 1024"upload-icon"photo-o"upload-text"上传图…...
华为配置VRRP负载分担示例
组网需求 如图1所示,HostA和HostC通过Switch双归属到SwitchA和SwitchB。为减轻SwitchA上数据流量的承载压力,HostA以SwitchA为默认网关接入Internet,SwitchB作为备份网关;HostC以SwitchB为默认网关接入Internet,Switc…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
