我在本地网络上使用apt-cacher-ng
客户端的以下配置:
Acquire::http { Proxy "http://acng-host:3142"; };
一些客户端是笔记本电脑,那么如何配置它们以便仅在该网络可用时使用缓存?
答案1
来自服务器你可以通过 avahi 向网络宣布有一个 apt-cacher-ng 实例
来自客户您可以检查是否存在 apt-cacher-ng 服务并相应地修改 apt 代理设置。
服务器
安装
$ sudo apt-get install apt-cacher-ng squid-deb-proxy-client
对于 Ubuntu 14.04 之前的版本,请将以下代码片段放入 /etc/avahi/services/apt-cacher-ng.service:
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">apt-cacher-ng proxy on %h</name>
<service protocol="ipv4">
<type>_apt_proxy._tcp</type>
<port>3142</port>
</service>
</service-group>
客户
安装
$ sudo apt-get install squid-deb-proxy-client
以下是安装服务器|客户端的代码片段,取决于是否已经有 apt-get 代理:
来源:http://blog.surgut.co.uk/2013/03/avahi-apt-cacher-ng-sbuild.html
答案2
类似这样的事情应该可以工作:
/etc/NetworkManager/dispatcher.d
#!/bin/bash
ip=10.0.1.13
port=3142
nc -w 1 $ip $port
proxy_file="/etc/apt/apt.conf.d/02local_proxy"
if [ $? -eq 0 ]; then
echo "Acquire::http { Proxy \"http://$ip:$port\"; };" > $proxy_file
echo 'Acquire::https { Proxy "false"; };' >> $proxy_file
else
rm -f $proxy_file
fi
修复权限
sudo chmod +x /etc/NetworkManager/dispatcher.d/99SetAptProxy
笔记:
- “nc”命令测试它是否可以连接到给定IP地址上的3142端口。
- 每次网络管理器更改网络接口时都会运行此脚本。
- 随意改变方式您检测到的代理,这对我来说有效,但如果您在外部网络上安装软件包,这是一个安全漏洞。
答案3
这不是一个确切的答案,因为你必须更改现有的缓存设置,但这squid-deb-proxy
是一个很好的解决方案,可以提供一个缓存,如果可用,它将被透明地使用,并且在缓存服务器和客户端上都非常容易设置。请参阅第一个回答这个问题更多细节。