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
相关推荐
隔振消音专家22 分钟前
冷水机组振动传导影响及专业化减振适配治理方案
大数据·运维
Brilliantwxx23 分钟前
【Linux】 软件包管理器(yum)+ Vim使用
linux·运维·服务器·开发语言·编辑器·vim
skywalk816328 分钟前
在FreeBSD的Uubntu兼容环境下安装Reasonix
linux·运维·freebsd
^yi42 分钟前
【Linux系统编程】对操作系统的理解
linux·运维·服务器·操作系统·系统调用·os
Kina_C1 小时前
LVS-NAT 负载均衡实验从环境搭建到规则持久化
linux·运维·服务器·负载均衡·lvs
小肝一下1 小时前
7. 库制作与原理
linux·c语言·操作系统·bash·shell·动静态库
Android洋芋1 小时前
PrintFriendly网页文章转PDF插件工具及技术分析
运维·服务器·pdf·网页转pdf
Elastic 中国社区官方博客1 小时前
使用重新设计的 AutoOps 更快地进行 Elasticsearch 问题排查
大数据·运维·前端·人工智能·elasticsearch·搜索引擎·全文检索
RoboWizard2 小时前
金士顿高速闪存盘 单双接口适配多元存储需求
大数据·运维·人工智能·智能手机·云计算
hkj88082 小时前
Ubuntu 20.04 安装 OpenJDK 17
linux·运维·ubuntu