千家信息网

怎么在Debian中安装使用apt-p2p来构建软件包缓存

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要讲解了"怎么在Debian中安装使用apt-p2p来构建软件包缓存",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么在Debian中安装使
千家信息网最后更新 2026年11月04日怎么在Debian中安装使用apt-p2p来构建软件包缓存

这篇文章主要讲解了"怎么在Debian中安装使用apt-p2p来构建软件包缓存",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么在Debian中安装使用apt-p2p来构建软件包缓存"吧!


apt-p2p,顾名思义,就是用户与用户之间直接进行 deb 软件包的传递。

后来我想起Debian曾开发过一个叫apt-p2p的软件,它的设计初衷是缓存已下载的软件包提供给其他同样运行着apt-p2p的peers,作为从软件源下载的补充。那么是否可以用这个软件在局域网内搭建一个Debian软件包缓存呢?

apt-p2p拥有着 P2P 技术的优势:
# * 即能从用户节点中获取软件包,同时又能从官方源中下载
# * 使用 apt-p2p 的人越多,软件包的传递效率就越高、速度越快
# * 低 CPU 和内存资源消耗
# *先进行哈希校验,之后才进行软件包的传递,最大限度地确保安全、避免下载到损坏的包

但同样,它也存在着 P2P 的弊端:
# * 如果使用 apt-p2p 的人不多,速度可能还不及原装的 apt-get。
# * 尽管机率非常小,但仍可能遭遇到潜在的哈希欺骗,进而引发系统安全隐患

目前,在天朝境内使用 apt-p2p 的人的确不多,这一情况可能是制约 apt-p2p 在天朝推广的最主要原因。
但如果人人都不去支持 apt-p2p,那 apt-p2p 又如何发展得起来呢?我们又如何才能获得 apt-p2p 的便利呢?
所以,鄙人在此号召大家一起来使用 apt-p2p!


安装步骤方法

1、准备依赖环境

代码如下:


sudo apt-get install python python-apt python-twisted python-twisted-web2


2、安装 apt-p2p

代码如下:


sudo apt-get install apt-p2p


3、修改软件源列表(注:第三方源不用也不必修改)

代码如下:


sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
sudo sed -i 's%http://%http://localhost:9977/%g' /etc/apt/sources.list


4、根据需要配置apt-p2p

代码如下:


sudo gedit /etc/apt-p2p/apt-p2p.conf


其中
"PORT = "指定 apt-p2p 使用的端口,默认为"9977"。当然,你也可以指定它为"9527",只是要确保与《/etc/apt/sources.list》中的修改值一致
"UPLOAD_LIMIT = "指定最大上传速度,默认为"0"即不限速,建议设置为"10~50"(KB/秒)
"MIN_DOWNLOAD_PEERS = "是指定当可用的 prees 节点少于多少时,才开始从官方源下载,建议使用默认值"3"
"CACHE_DIR = "是指定 apt-p2p 的软件包缓存目录,建议使用默认值
"OTHER_DIRS = "是指定额外的软件包目录。注意:一旦指定,在该目录下的所有文件都会被上传
"UPLOAD_LIMIT = "指定是否进行软件包下载数据列表统计并公布。默认为"yes"即进行公布,若你的电脑对保密等级要求特别高,那请设置为"no"
"DHT-ONLY = "是否仅只使用分布式散列表提供的资源,建议使用默认值"no"

5、若是装有防火墙,须将"9967"、"9977"端口开放;若是使用路由器,还需要进行映射设置

6、重新启动 apt-p2p,以应用新配置

代码如下:


sudo rm -rf /var/cache/apt-p2p/cache/*
sudo /etc/init.d/apt-p2p restart


7、开始更新、升级系统或安装软件包

代码如下:


sudo apt-get update

sudo apt-get upgrade


说明:有的教程说要禁用第三方源,但就鄙人实际使用下来的情况,就算不禁用第三方源也没有什么影响

检视 apt-p2p 运行情况的方法:
在浏览器地址栏中输入 http://localhost:9977/,即可察看相关信息

本地软件包缓存搭建方法:

apt-p2p由Python写成,安装好后默认监听于TCP和UDP的9977端口,可通过/etc/apt-p2p/apt-p2p.conf改变其行为。TCP端口同时用于本机apt下载软件包,而UDP端口用于组建在p2p文件共享工具中常见的DHT网络。只需要在/etc/apt/sources.list文件中软件源的url,例如http://mirror.server/debian/的服务器域名前面插入localhost:9977,即成为http://localhost:9977/mirror.server/debian/,具体从互联网上获取软件包的工作便交给apt-p2p负责了:

当收到来自本机apt的文件下载请求时,apt-p2p会先检测文件是否已经存在于缓存的目录树中
如果已存在,则还要检查是否为最新(通过向软件源服务器发出HEAD请求来实现)
如果是,则直接返回缓存的文件
否则从互联网上下载文件供给apt,同时存入缓存并记录其散列值
下载文件会首先尝试从peer处下载,不成再到软件源服务器处下载
缓存下来的文件和散列值可供其他peer使用。可以通过apt-p2p的日志文件/var/log/apt-p2p.log深入观测这一过程。

以下是我安装了apt-p2p的主机mycastle的sources.list:

代码如下:


deb http://localhost:9977/mirrors.ustc.edu.cn/debian/ testing main
deb-src http://localhost:9977/mirrors.ustc.edu.cn/debian/ testing main
deb http://localhost:9977/mirrors.ustc.edu.cn/debian-security/ testing/updates main
deb-src http://localhost:9977/mirrors.ustc.edu.cn/debian-security testing/updates main
deb http://localhost:9977/mirrors.ustc.edu.cn/debian/ testing-proposed-updates main
deb-src http://localhost:9977/mirrors.ustc.edu.cn/debian/ testing-proposed-updates main
deb http://localhost:9977/mirrors.ustc.edu.cn/debian/ unstable main
deb-src http://localhost:9977/mirrors.ustc.edu.cn/debian/ unstable main


然而apt-p2p的缓存只能给本机使用,其他主机若试图直接访问9977端口只会得到404错误。因此还需要在安装apt-p2p的主机上架设一个http反向代理,使得在apt-p2p看来,所有的请求均来自本机。

我使用的反向代理是Pound,它在安装好后默认是禁用的。在/etc/pound/pound.cfg中配置好服务器后再到/etc/default/pound中启用它,然后使用service启动服务器即可。

我使用的配置如下:

代码如下:


...(keep default)
ListenHTTP
Address 0.0.0.0
Port 9978
## allow PUT and DELETE also (by default only GET, POST and HEAD)?:
xHTTP 0
Service
BackEnd
Address 127.0.0.1
Port 9977
End
End
End


监听于9978端口,后台服务器在本机的9977端口。

这样一来,其他主机便也可以通过9978端口使用apt-p2p的缓存了。我的做法是在打算使用缓存的其他主机上将/etc/apt/sources.list移动到/etc/apt/sources.list.d/50_main.list,然后仿照缓存主机的软件源列表建立/etc/apt/sources.list.d/10_apt-p2p-home.list,只是要把url中的localhost:9977换成.local:9978即可,当然最好保持软件源服务器相同。这样apt会优先通过反向代理使用apt-p2p的缓存,当缓存不可用时仍可直接连接软件源服务器获取软件包:

代码如下:


10_apt-p2p-home.list:

deb http://mycastle.local:9978/mirrors.ustc.edu.cn/debian/ testing main
deb-src http://mycastle.local:9978/mirrors.ustc.edu.cn/debian/ testing main
deb http://mycastle.local:9978/mirrors.ustc.edu.cn/debian-security/ testing/updates main
deb-src http://mycastle.local:9978/mirrors.ustc.edu.cn/debian-security testing/updates main
deb http://mycastle.local:9978/mirrors.ustc.edu.cn/debian/ testing-proposed-updates main
deb-src http://mycastle.local:9978/mirrors.ustc.edu.cn/debian/ testing-proposed-updates main
deb http://mycastle.local:9978/mirrors.ustc.edu.cn/debian/ unstable main
deb-src http://mycastle.local:9978/mirrors.ustc.edu.cn/debian/ unstable main
50_main.list:

deb http://mirrors.ustc.edu.cn/debian/ testing main
deb-src http://mirrors.ustc.edu.cn/debian/ testing main
deb http://mirrors.ustc.edu.cn/debian-security/ testing/updates main
deb-src http://mirrors.ustc.edu.cn/debian-security testing/updates main
deb http://mirrors.ustc.edu.cn/debian/ testing-proposed-updates main
deb-src http://mirrors.ustc.edu.cn/debian/ testing-proposed-updates main
deb http://mirrors.ustc.edu.cn/debian/ unstable main
deb-src http://mirrors.ustc.edu.cn/debian/ unstable main


如安装了apt-transport-https,可以将50_main.list中的http换成https。

这种以主机名加".local"的域名格式是mDNS/DNS-SD协议提供的一种在广播域内定位主机和发布服务的方法,主要实现有Avahi和Mac OS X的Bonjour。

这样一来,在局域网内,任何一台主机都优先通过apt-p2p获取软件包,一台更新可以惠及全家;即使短时间内更新多台主机,也只需要向软件源索取一次;而且大规模的数据流动发生在带宽很高的局域网内,更缩短了更新时间,提高了效率。

只是这样一来相当于在非缓存主机上配置了两个软件源,而当这两个软件源重复部分的信息不同步时(如笔记本计算机在局域网外更新了直连软件源服务器的软件包列表),apt-get source是无法使用的,因为apt对源码包的检查更严格。

感谢各位的阅读,以上就是"怎么在Debian中安装使用apt-p2p来构建软件包缓存"的内容了,经过本文的学习后,相信大家对怎么在Debian中安装使用apt-p2p来构建软件包缓存这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

软件 软件包 缓存 主机 文件 服务 代码 服务器 端口 本机 更新 配置 中安 局域 局域网 建议 情况 方法 目录 这样一来 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州万易互联网科技有限公司 艾特科技互联网 北京互联网络科技有限公司 赫美联合互联网科技 互联网金融 科技创新 顺网科技2021年互联网排名 互联网科技创新企业排名 科技赋能互联网健康 济南华为互联网科技产业总部基地 浙南科技城互联网大厦建设工程 互联网科技的全部知识 长沙茂晟互联网科技有限公司 特约风豹互联网科技为什么扣费 21世纪互联网科技成就 半导体行业属于互联网高科技类吗 上海同邻互联网科技有限公司规模 萌小萌互联网科技河南有限公司 互联网科技手抄报图片 数字互联网科技有限公司 优雇互联网科技有限公司 凡科互联网科技 北京互联网络科技有限公司 壕鑫互联网络科技 广西互联网科技公司 互联网科技咨询 互联网科技与管理 移动互联网科技公司 中天科技中国工业互联网 2021世界互联网领先科技成果发布 绵阳真晨互联网科技有限公司
0