如何仅在可用时使用 apt-cacher-ng?

its*_*rty 6 apt proxy apt-cacher-ng

apt-cacher-ng在我的本地网络中使用客户端上的以下配置:

Acquire::http { Proxy "http://acng-host:3142"; };
Run Code Online (Sandbox Code Playgroud)

一些客户端是笔记本电脑,那么我如何将它们配置为仅在该网络上可用时才使用缓存?

Jav*_*pez 7

服务器你可以通过 avahi 向网络宣布有一个 apt-cacher-ng 实例

客户端,您可以检查是否存在 apt-cacher-ng 服务并相应地修改 apt 代理设置。


服务器

安装

$ sudo apt-get install apt-cacher-ng squid-deb-proxy-client
Run Code Online (Sandbox Code Playgroud)

对于早于 14.04 的 Ubuntu 版本,将以下代码段放在 /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>
Run Code Online (Sandbox Code Playgroud)

客户

安装

$ sudo apt-get install squid-deb-proxy-client
Run Code Online (Sandbox Code Playgroud)

这是安装服务器|客户端的片段,具体取决于是否已经存在 apt-get 代理:

来源:http : //blog.surgut.co.uk/2013/03/avahi-apt-cacher-ng-sbuild.html


dpb*_*dpb 6

这样的事情应该工作:

/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
Run Code Online (Sandbox Code Playgroud)

修复权限

sudo chmod +x /etc/NetworkManager/dispatcher.d/99SetAptProxy
Run Code Online (Sandbox Code Playgroud)

笔记:

  • “nc”命令测试它是否可以连接到给定 IP 地址上的 3142 端口。
  • 每次网络管理器更改网络接口时都会运行此脚本。
  • 随意改变的方式,你发现为代理,这对我的作品,但如果你在外地网络上安装软件包,例如,它是一个安全漏洞。