如何设置apt-cacher服务器?

我有超过500个运行Ubuntu 10.04、Ubuntu 10.10和Ubuntu 11.04的系统。由于带宽使用量大,我们很难从互联网上安装新的软件包到这些机器上。我计划设置一个apt-cacher服务器,使其从本地机器安装软件包,而不是从互联网上安装。请问有没有人能给我一个简洁的解决方案?提前感谢您的帮助。
服务器配置错误:
root@karthick:~# sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives
Importing: acl_2.2.49-3_i386.deb
Failed to rename acl_2.2.49-3_i386.deb. Try read-only (-r) or symlink (-s) options. at /usr/share/apt-cacher/apt-cacher-import.pl line 154.

安装软件包时客户端出现错误 在此输入图片描述

请有人能解决吗?

3个回答

来自Apt-Cacher-Server

服务器端配置。

在您想要托管的系统上安装apt-cacher和apache2 web服务器:sudo apt-get install apt-cacher apache2。如果您已经运行了apache,请删除它。
启用apt-cacher:sudo gedit /etc/default/apt-cacher。将autostart更改为1。
如果在安装apt-cacher之前已经安装了apache:sudo invoke-rc.d apache2 restart。现在您应该能够访问http://server:3142/etc/apt-cacher/apt-cacher.conf包含所有设置。根据需要进行调整。
导入本地缓存:sudo /usr/share/apt-cacher/apt-cacher-import.pl /var/cache/apt/archives 挂载安装程序CD:sudo mount -o loop /home/username_or_other_path/ubuntu-9.10-rc-alternate-i386.iso /media/cdrom0并导入CD缓存:sudo /usr/share/apt-cacher/apt-cacher-import.pl -R -r /media/cdrom0

客户端配置:

  1. Sources.list:将所有的URL更改为指向您服务器的URL。 (例如:deb http://apt-cacher-server:3142/archive.ubuntu.com/ubuntu/) (先更改一个客户端,如果有效则复制到其他所有系统)

2a. 用作APT代理:静态配置。在终端中输入:
sudo nano /etc/apt/apt.conf.d/01proxy
添加: Acquire::http::Proxy "http://<apt-cacher服务器的IP地址或主机名>:3142";

2b. 用作APT代理:漫游配置:请参考上方链接进行设置和脚本。

我个人没有测试过,但有同事使用这个页面为我们自己设置了。

编辑:关于错误:显然Perl的rename函数无法在设备之间移动文件,而导入和缓存正好位于磁盘上。

选项: 1. 使用-s参数(仅创建符号链接)。 2. 在导入之前手动将文件移动到相同的设备上。


非常感谢简要的解释。正如我之前所说,我有Ubuntu 10.04、10.10和Natty版本。所以,如果我在Natty上安装一些软件包,它应该从本地的Natty源安装软件包;如果我在Ubuntu 10.04上安装一些软件包,它应该从本地的10.04源安装软件包。是这样吗?还是我需要设置3个apt-cacher服务器?比如一个用于Ubuntu 10.04,另一个用于10.10,最后一个用于Natty? - karthick87
不知道...我们只用它来管理一个系统(所有客户都遵循相同的升级路径,所以目前都在使用Maverick)。但是...不同版本的软件包也有不同的名称,而且客户端的源列表中还有版本名称。 我认为应该只需要一个apt服务器就可以工作。 - Rinzwind
你用什么版本的Ubuntu作为apt-cacher服务器? - karthick87
我们使用Maverick。 - Rinzwind
Ubuntu - 10.10 服务器版,对吧? - karthick87
我们使用桌面版,但你使用哪个版本并不重要:它基本上是围绕Apache设置的,所以它依赖的操作系统并不重要。 - Rinzwind
如何将最新更新与CD缓存一起设置? - karthick87
我不明白你的问题。抱歉...CD缓存会占用一些时间,所以你不需要从网上下载这些文件(这样更快)。当你更新系统时,更新将自动进行(???)。 - Rinzwind
好的,非常感谢。你能否提供Ubuntu 10.10版本的CD缓存下载链接? - karthick87
这将缓存CD内容(对于任何版本)sudo /usr/share/apt-cacher/apt-cacher-import.pl -R -r /media/cdrom0(这样就不必从Ubuntu服务器下载整个CD内容) - Rinzwind
我在输入特定命令时遇到了一个错误。请查看我问题中的更新内容。 - karthick87
我在这里找到了同样的错误:http://mummila.net/nuudelisoppa/2009/08/15/apt-cacher-import-pl-fails-to-rename-move-deb-files-during-import/,并将其放入回答中! - Rinzwind
我需要移动哪些文件以及移动到哪个位置? - karthick87

我从来没有成功地使用过那些 apt-cacher,所以我问了 Michael Vogt 是否可以为此提供一个易于使用的 squid 配置,于是 squid-deb-proxy 诞生了。

它非常容易设置,并且客户端不需要进行任何配置,只需安装客户端软件包。

使用说明在这里:


我想对设置进行交叉检查,以确定设置是否正常工作。我该如何做到这一点? - karthick87
+1。绝对符合零配置的要求。squid-deb-proxy非常棒,对于普通用户来说,应该优先选择它,而不是apt-cacher和其他类似软件。 - Ehtesh Choudhury

我认为一个透明代理,像Squid这样的工具可以轻松完成这项任务。