服务器

服务器

我在本地网络上使用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是一个很好的解决方案,可以提供一个缓存,如果可用,它将被透明地使用,并且在缓存服务器和客户端上都非常容易设置。请参阅第一个回答这个问题更多细节。

相关内容