当前位置: 首页 > news >正文

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

相关文章:

  • R语言【rgbif】——使用rgbif获取非行政单位区域内的物种记录信息(以泛喜马拉雅地区为例)
  • C++初学者使用Dev-C++5.11必备的小技巧
  • 【Proteus仿真】【51单片机】电子称重秤
  • <VR串流线方案> PICO 4 Pro VR串流线方案 Oculus Quest2 Link串流线方案
  • PyTorch : torch.cuda.amp: 自动混合精度详解
  • VUE篇之日历组件
  • 基于Springboot的教学信息反馈系统的设计与实现(源码+调试)
  • java实现局域网内视频投屏播放(一)背景/需求
  • MATLAB Sub2ind下标值转化
  • Linux---获取管理员权限的相关命令
  • Day20【time模块】
  • 在Flutter中使用PhotoViewGallery指南
  • Docker与K8s的区别
  • 数字化转型导师坚鹏:中国工商银行人工智能与金融数字化转型培训
  • vscode 文件目录栏缩进
  • 网络传输文件的问题
  • JavaScript-如何实现克隆(clone)函数
  • 【vuex入门系列02】mutation接收单个参数和多个参数
  • CSS居中完全指南——构建CSS居中决策树
  • eclipse(luna)创建web工程
  • eclipse的离线汉化
  • ES6 学习笔记(一)let,const和解构赋值
  • Netty源码解析1-Buffer
  • nodejs:开发并发布一个nodejs包
  • Unix命令
  • Vue--数据传输
  • 安装python包到指定虚拟环境
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 利用jquery编写加法运算验证码
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 使用API自动生成工具优化前端工作流
  • 用Canvas画一棵二叉树
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # Java NIO(一)FileChannel
  • #1015 : KMP算法
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • $.ajax()方法详解
  • (MATLAB)第五章-矩阵运算
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (四)模仿学习-完成后台管理页面查询
  • (转载)hibernate缓存
  • ../depcomp: line 571: exec: g++: not found
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .chm格式文件如何阅读
  • .Net IE10 _doPostBack 未定义
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .Net 垃圾回收机制原理(二)
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .Net中的设计模式——Factory Method模式