使用 apt-p2p 更新 Debian/Ubuntu 系统


P2P(Peer-to-Peer),即“点对点技术”,我们也可以理解为用户与用户之间直接的数据传递,典型的 P2P 技术代表如:BT、电驴。
有很多 Linux 用户曾经梦想过,如果能像 BT、电驴一样来进行软件包的高速传递,那该多好啊——不但加快自己的速度,还能与别人分享自己下载来的软件包——真正做到“人人为我,我为人人”。

apt-p2p 就是这么一个梦想中的东西。

官方网站@http://www.camrdale.org/apt-p2p/

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

它拥有着 P2P 技术的优势:

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

但同样,它也存在着 P2P 的弊端:

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

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

步骤方法

1、准备依赖环境

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

2、安装 apt-p2p

1
sudo apt-get install apt-p2p

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

1
2
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

1
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” <Actually, 10 is better>
“CACHE_DIR = ”是指定 apt-p2p 的软件包缓存目录,建议使用默认值
“OTHER_DIRS = ”是指定额外的软件包目录。注意:一旦指定,在该目录下的所有文件都会被上传
“UPLOAD_LIMIT = ”指定是否进行软件包下载数据列表统计并公布。默认为“yes”即进行公布,若你的电脑对保密等级要求特别高,那请设置为“no”
“DHT-ONLY = ”是否仅只使用分布式散列表提供的资源,建议使用默认值“no”

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

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

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

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

1
2
3
sudo apt-get update

sudo apt-get upgrade

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

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

后悔药——卸载 apt-p2p 的方法:

1
2
3
4
sudo apt-get remove --purge apt-p2p
sudo cp /etc/apt/sources.list.backup /etc/apt/sources.list
sudo rm -rf /var/cache/apt-p2p/*
sudo apt-get update


塗牆

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s