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…...

【Python】按升序排列 Excel 工作表
发现按名称对 Excel 工作表进行排序很麻烦,因此创建了一个代码来使用 Python 的 openpyxl 对它们进行排序。 1. 本次创建的代码概述 在GUI中指定一个Excel文件(使用Tkinter。这是一个标准模块,因此不需要安装)加载Excel文件&…...

定时器TIM HAL库+cubeMX(上)
定时器时钟源APB1 36MHz 一.基本定时器 1.基本框图 2.溢出时间计算 3.配置定时器步骤 TIM_HandleTypeDef g_timx_handle;/* 定时器中断初始化函数 */ void btim_timx_int_init(uint16_t arr, uint16_t psc) {g_timx_handle.Instance TIM6;g_timx_handle.Init.Prescaler p…...

我常用的几个经典Python模块
Python常用的模块非常多,主要分为内置模块和第三方模块两大类,且不同模块应用场景不同又可以分为文本类、数据结构类、数学运算类、文件系统类、爬虫类、网络通讯类等多个类型。 大家常用的内置模块比如:math、re、datetime、urllib、os、ra…...

课堂练习4.4:页式虚存
4-7 课堂练习4.4:页式虚存 缺页异常在 Linux 内核处理中占有非常重要的位置,很多 Linux 特性,如写时复制,页框延迟分配,内存回收中的磁盘和内存交换,都需要借助缺页异常来进行。 本实训分析 Linux 0.11 的…...

javascript实现Stack(栈)数据结构
上一篇文章我们理解了List这种数据结构,知道了它的特点和一些使用场景,这篇文章我们就来看一下栈这种数据结构,这里的栈可不是客栈哦,哈哈 栈其实和List非常像,使用javascript实现都是基于数组来实现 尝试理解Stack …...

Layui深入
1、代码: <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>注册页面</title> <style> .container { max-width: 600px; margin: 0 auto; padding: 20px; …...

网络层--TCP/UDP协议
目录 一、TCP/UDP协议介绍 1、UDP(User Datagram Protocol)--用户数据报协议 1.1 UDP报文格式 1.2 UDP协议的特性 2、TCP(Transmission Control Protocol )--传输控制协议 2.1 TCP报文格式 2.2 TCP协议的特性 2.3 TCP三次握手 2.4 四次挥手 三、TCP和UDP的区别 四、t…...

前端发送请求之参数处理---multipart/form-data与application/x-www-form-urlencoded
Content-Type就是指 HTTP 发送信息至服务器时的内容编码类型,服务器根据编码类型使用特定的解析方式,获取数据流中的数据。 其实前后端发送请求的方式有 text/plain、application/json、application/x-www-form-urlencoded、 multipart/form-data等&…...

解决Ubuntu16.04没声音
第一步:安装 PulseAudio Volum Control Ubuntu没有声音(听不到声音)的解决方法 第二步:No cards available for configuration 【解决Ubuntu18.04没声音:No cards available for configuration】 完美解决…...

12.14每日一题(备战蓝桥杯归并排序)
12.14每日一题(备战蓝桥杯归并排序) 题目 归并排序 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数&…...