web-dev-qa-db-ja.com

apt-cacher-ngを使用可能な場合にのみ使用するには?

ローカルネットワークでapt-cacher-ngを使用し、クライアントで次の構成を使用しています。

Acquire::http { Proxy "http://acng-Host:3142"; };

一部のクライアントはラップトップですが、このネットワークで利用可能な場合にのみキャッシュを使用するように構成するにはどうすればよいですか?

5
itshorty

このような何かが動作するはずです:

/ 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ポートに接続できることをテストします。
  • このスクリプトは、ネットワークマネージャーによってネットワークインターフェイスが変更されるたびに実行されます。
  • プロキシ用に検出したwayを自由に変更できます。これは私には有効ですが、外部ネットワークにパッケージをインストールする場合のセキュリティの脆弱性です、 例えば。
5
dpb

serverから、avahiを通じてapt-cacher-ngインスタンスがあることをネットワークにアナウンスできます。

clientから、apt-cacher-ngサービスが存在するかどうかを確認し、それに従ってaptプロキシ設定を変更できます。


サーバ

インストール

$ Sudo apt-get install apt-cacher-ng squid-deb-proxy-client

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>

クライアント

インストール

$ Sudo apt-get install squid-deb-proxy-client

Apt-getプロキシが既にあるかどうかに応じてserver | clientをインストールするスニペットを次に示します。

ソース: http://blog.surgut.co.uk/2013/03/avahi-apt-cacher-ng-sbuild.html

5
Javier López