本人家里有好几台运行Debian GNU/Linux testing的计算机,共处于一个小局域网内。因为Debian testing是滚动更新的,所以我每隔几天就要把它们全部更新一遍。但是一来中国家庭的网速还是说不上很快,每台机器都要从上游软件源的服务器上下载成百上千兆字节的软件包要花不少时间;二来这样操作也给软件源的服务器造成不小的负担。
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、准备依赖环境
5、若是装有防火墙,须将“9967”、“9977”端口开放;若是使用路由器,还需要进行映射设置
6、重新启动 apt-p2p,以应用新配置
检视 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:
我使用的反向代理是Pound,它在安装好后默认是禁用的。在/etc/pound/pound.cfg中配置好服务器后再到/etc/default/pound中启用它,然后使用service启动服务器即可。
我使用的配置如下:
这样一来,其他主机便也可以通过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换成<hostname-of-cache-server>.local:9978即可,当然最好保持软件源服务器相同。这样apt会优先通过反向代理使用apt-p2p的缓存,当缓存不可用时仍可直接连接软件源服务器获取软件包:
复制代<
您可能想查找下面的文章:
- Debian 6.02 (squeeze)下编译安装 MySQL 5.5的方法
- Debian中PostgreSQL数据库安装配置实例
- Debian在工控中的使用1(移植debian到Atmelsam9g25低成本工控平台)
- Parallelstoolsdebian无法安装
- Debian 8或Debian 9(64 位)安装 .NET Core
- debian下配置nginx+php+mysql 遇到的坑
- ubuntu下从源码编译安装flare以及如何从Debian包安装
- Debian安装memcached和php5-memcache模块
- 在Debian上配置Apache+MySQL+PHP4 debian安装apache2 debian apache 配置 debian apache2 cg
- debian开启php的curl支持 debian 8 debian 下载 debian 中文输入