搭建apt本地加速源

对于Ubuntu来说,用apt方式安装升级是一件非常方便的事情。但是对于一个拥有较多Ubuntu服务器的内网来说,每台主机的升级过程都需要到公开的apt源中下载deb包来安装是一件非常浪费带宽而且费力不讨好的事情。很自然的,我们就应该把下载下来的包保存下来分享给其他的主机。

其实n久之前,Ubuntu提供了apt-proxy工具。但直到近期的版本,这个apt-proxy已经被移出apt源,取而代之的就是今天我们要说的apt-cacher。

实验环境设计如下:

  • 一台apt-cacher server, IP: 192.168.0.1。
  • 一台client,IP:192.168.0.2。
  • 两台主机都是ubuntu 1404。
  • 两台主机都需要将192.168.0.1设为apt源(即192.168.0.1也需要通过自己本身的apt源升级)。

server 端安装起来还是老一套:

#apt-get update
#apt-get install apt-cacher

如果安装过程中,系统提示您选择服务器启动方式,就选择“daemon”。正常安装完之后,服务器端应该自动启动好了。默认监听的是3142端口,如下(下面展示了1404的netstat的一个明显bug,大家来找碴  😈 ):

root@ilab-os-6095301:~# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 967/sshd
tcp 0 464 192.168.0.1:22 10.239.200.37:51640 ESTABLISHED 18739/0
tcp6 0 0 :::3142 :::* LISTEN 18908/perl
tcp6 0 0 :::22 :::* LISTEN 967/sshd

如果系统没有起来,请确认/etc/default/apt-cacher 文件里AUTOSTART=1。然后直接通过service apt-cacher start启动就可。

要稍微改动一下配置文件 /etc/apt-cacher/apt-cacher.conf,开启 allowed_hosts = *,允许所有的主机连接到server端。service apt-cacher restart重起服务端使配置生效。

事情做到这里其实服务端已经配置好了。你可以直接通过浏览器访问192.168.0.1的3142端口,会有一个非常像phpinfo风格的页面出现。不过要为如此多的bug吐吐槽:

  1. 上面的“Acquire::http::proxy=http://ilab-os-6095301:80”这种配置方法明显的有问题,是不可能成功的。之后我会提供正确的方式,在这里卖个关子。
  2. http_proxy的配置项根本就是useless!

好了,现在先配置服务器端自己的apt源。编辑/etc/apt/sources.list以及/etc/apt/sources.list.d/下所有的.list文件,http://archive.ubuntu.com/ubuntu/ 链接地址改为:http://192.168.0.1:3142/archive.ubuntu.com/ubuntu/或者更直接的http://192.168.0.1:3142/apt-cacher/archive.ubuntu.com/ubuntu/。简单的说,就是用编辑器把”http://”替换成“http://192.168.0.1:3142/” 即可!

说道这里,你一定会说这么一台台的改会很麻烦。别着急,快速的方法来了。我会在192.168.0.2上用更为简单的方法!

echo 'Acquire::http::Proxy "http://192.168.0.1:3142";' > /etc/apt/apt.conf.d/01proxy

OK!这就是之前的那个bug。

回到server端,先把已经下载的deb导入:

/usr/share/apt-cacher/apt-cacher-import.pl -l /var/cache/apt/archives

还有,插入安装光盘,可以把光盘的中包也一并导入:

/usr/share/apt-cacher/apt-cacher-import.pl -R -r /media/cdrom0

 

推荐阅读:
DCDC’19-NUMA的优势和陷阱

去年的DCDC,我主要介绍了基 Read more

应用程序状态切换检测

任何一个合理的应用程序的运行时 Read more

DCDC2018–混合部署场景下RDT的应用

5月中旬,我参加了在加利福尼亚 Read more

Kernel 4.14的RDT配置

之前发过一个帖子介绍了RDT在 Read more

发表评论

电子邮件地址不会被公开。 必填项已用*标注

请补全下列算式: *

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据