답변:
나는 많은 솔루션에 대한 연구를했고 일부 우분투 개발자는 10.04 이상에 대한 프록시 구성 (오징어 기반)을 제안했습니다. 이라고 squid-deb-proxy
합니다. 시스템은 서버로 작동하기 만하면됩니다. 대기업은 일반적으로 자체 미러를 실행하지만 대부분의 사람들에게는 온 디맨드 미러링으로 충분합니다.
서버로 작동하려는 머신에서 다음을 사용하여 도구를 설치하십시오.
sudo apt-get install squid-deb-proxy avahi-utils
이제 서비스 비트를 시작하십시오.
sudo start squid-deb-proxy
그리고 avahi 비트 (12.04 이상인 경우 필요하지 않음) :
sudo start squid-deb-proxy-avahi
프록시 서버 (기본적으로 포트 8000을 수신)와 서버가 zeroconf를 통해 네트워크에 광고하는 데 필요한 avahi 도구가 설치됩니다.
에 각 컴퓨터에 당신이 (너무 캐시를 사용할 수 있도록 클라이언트 및 서버 자체) 캐시를 사용하려면, 당신은 그들을 여기를 클릭, 자동으로 서버의 적절한 살펴 보자 클라이언트 측 도구를 설치해야 할 필요가 :
또는 명령 줄을 통해 :
sudo apt-get install squid-deb-proxy-client
선택 사항 : 효율성을 극대화하려면 한 컴퓨터에서 업데이트를 자동으로 다운로드하도록 설정해야합니다. 따라서 다른 컴퓨터에서는 필요할 때 이미 캐시에 있습니다. 시스템-> 관리-> 업데이트 관리자로 이동 한 다음 업데이트 탭에서 "설정 ..."버튼을 클릭하여 모든 업데이트를 자동으로 다운로드하도록 설정하십시오.
기본적으로 캐시는 공식 우분투 리포지토리 만 캐시하도록 설정되어 있습니다. 더 추가하려면의 소스 목록에 추가해야합니다 /etc/squid-deb-proxy/mirror-dstdomain.acl
. 여기서 ppa.launchpad.net 또는 사용 가능한 다른 서비스를 추가 할 수 있습니다. 이 파일을 변경 한 후 변경 사항을 적용하려면 실행해야합니다 sudo restart squid-deb-proxy
.
어떤 이유로 든 zeroconf를 사용하지 않으려는 경우 (네트워크 등의 이유로) /etc/apt/apt.conf
다음 스탠자 를 편집 하고 추가하여 프록시를 사용하도록 클라이언트를 수동으로 설정할 수 있습니다 (0.0.0.0을 서버의 IP 주소로 대체하십시오) ) :
Acquire {
Retries "0";
HTTP { Proxy "http://0.0.0.0:8000"; };
};
방화벽을 사용하는 경우 avahi는 224.0.0.0/4 주소에서 5353을 사용하며 다음과 같은 규칙이 필요합니다.
# Specifically port 5353 which avahi uses
-A INPUT -i eth2 -d 224.0.0.0/4 --dport 5353 -j ACCEPT
# OR
# Wide open so all local broadcasting works
-A INPUT -i eth2 -d 224.0.0.0/4 -j ACCEPT
다음으로 프록시를 통한 실제 통신을 위해 TCP 포트 8000을 열어야합니다. 다음과 같은 것 :
-A INPUT -i eth2 -p tcp -m tcp --dport 8000 -d 192.168.0.1 -s 192.168.0.0/24 --syn -j ACCEPT
이 규칙은 단지 당신을 돕기위한 것입니다. 설정과 일대일로 일치하지 않을 수 있습니다. (예 : 잘못된 인터페이스, 개인 네트워크 IP 주소 등)
먼저 서버에서 로그를 확인하여 다음을 확인할 수 있습니다. tail -F /var/log/squid-deb-proxy/access.log
그런 다음 클라이언트가 설치된 시스템에서 업데이트를 실행하십시오. 로그는 다음과 같은 항목으로 스크롤하기 시작해야합니다.
1307310795.647 32 192.168.1.106 TCP_MISS/302 768 GET http://us.archive.ubuntu.com/ubuntu/dists/natty-proposed/universe/i18n/Translation-en.xz - DIRECT/141.210.26.10 text/html
1307310795.683 34 192.168.1.106 TCP_MISS/302 752 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/main/i18n/Translation-en_US.lzma - DIRECT/141.210.26.10 text/html
1307310795.716 32 192.168.1.106 TCP_MISS/302 746 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/main/i18n/Translation-en.lzma - DIRECT/141.210.26.10 text/html
1307310795.750 32 192.168.1.106 TCP_MISS/302 764 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/multiverse/i18n/Translation-en_US.lzma - DIRECT/141.210.26.10 text/html
1307310795.784 32 192.168.1.106 TCP_MISS/302 758 GET http://us.archive.ubuntu.com/ubuntu/dists/natty/multiverse/i18n/Translation-en.lzma - DIRECT/141.210.26.10 text/html
1307310795.817 32 192.168.1.106 TCP_MISS/404 657 GET http://us.archive.ubuntu.com/dists/natty-proposed/multiverse/i18n/Translation-en_US.xz - DIRECT/141.210.26.10 text/html
이는 클라이언트가 캐시를 볼 수 있지만 누락 된 것을 의미합니다. 아직 캐시하지 않은 것으로 예상됩니다. 이후의 각 실행은 TCP_HIT로 표시되어야합니다. 오징어 캐시 파일 자체는에서 찾을 수 있습니다 /var/cache/squid-deb-proxy
.
그때부터 네트워크의 모든 컴퓨터는 외부 네트워크에 도달하기 전에 캐시를 확인하여 패키지를 가져옵니다. 사용 가능한 새 패키지가있는 경우 첫 번째 시스템은 네트워크에서 해당 패키지를 다운로드 한 후 해당 패키지에 대한 후속 요청이 서버에서 클라이언트로 전달됩니다.
우리는 여전히 네트워크에서 광고 캐시를 즉시 사용하기 위해 apt를 활성화해야하며 기본적으로 클라이언트 조각을 설치할 필요가 없습니다. 또한 403의 deb가 미러 목록에없는 버그 를 수정해야 합니다.
apt.conf
아래에 파일 이 없습니다 /etc/apt
. 그러나 아래에 설정이있는 파일이 많이 /etc/apt/apt.conf.d
있습니다. 대신 파일을 만들어야한다고 생각하십니까?
apt-cacher-ng
작은 환경 (약 20 명의 클라이언트)에서 아무런 문제가 발생하지 않았으므로 @MagicFab 언급 문제가 현재 버전 (Ubuntu 10.04 및 10.10에 설치됨)에서 해결 되었다고 가정합니다 . 서버에는 구성이 필요하지 않으며 클라이언트에게 서버를 패키지 관리자 프록시로 사용하도록 지시하면됩니다.
패키지 를 설치하면 서버가 완전히 설치 되고 구성됩니다 apt-cacher-ng
.
클라이언트는 APT 프록시를 설정하여 다음을 /etc/apt/apt.conf.d/01proxy
포함 하는 파일을 추가하여 구성해야합니다 (여기서 "your-apt-server"는 서버 이름 또는 IP 주소 임).
Acquire::http { Proxy "http://your-apt-server:3142"; };
완료 -이제는 어떤 소스를 사용하거나 어떤 시스템 버전을 사용하든 상관없이 서버에서 패키지를 캐시합니다 (예 : 10.04 서버는 9.10,10.04 및 11.04 클라이언트가 아무런 문제 나 충돌없이 사용할 수 있음).
네트워크간에 로밍하는 클라이언트 랩톱이 있으면 조금 더 복잡해집니다. 네트워크 주소에 따라 올바른 프록시를 설정하는 스크립트를 만들었습니다. 스크립트는 실행 가능하며에 /etc/network/if-up.d/apt-proxy
있습니다. DHCP 서버에서 IPv4 주소를 수신하면 스크립트는 각 네트워크에 적합한 apt-cacher 서버를 설정합니다.
#!/bin/sh
set -e
# Don't bother when lo is configured.
if [ "$IFACE" = lo ]; then
exit 0
fi
# Only run from ifup.
if [ "$MODE" != start ]; then
exit 0
fi
# currently only cares about IPv4
if [ "$ADDRFAM" != inet ] && [ "$ADDRFAM" != NetworkManager ]; then
exit 0
fi
# only run for DHCP-assigned addresses
if [ "$DHCP4_IP_ADDRESS" = "" ]; then
exit 0
fi
# we're matching on network *broadcast* address,
# not the specific IP address we were assigned
case "$DHCP4_BROADCAST_ADDRESS" in
10.3.141.255)
PROXY='Acquire::http::Proxy "http://my-home-server:3142";';
;;
192.168.154.255)
PROXY='Acquire::http::Proxy "http://work-server.foo.bar.example.com:3142";';
;;
# add as needed
*)
# unknown, no proxying
PROXY=""
;;
esac
# set the proxy
FNAME="/etc/apt/apt.conf.d/01proxy"
echo -n "$PROXY">$FNAME
exit 0
squid-deb-proxy
과 squid-deb-proxy-client
: Zeroconf를 실제로 제로 유목 사용자에게 매우 유용 클라이언트의 구성, 의미 - 그리고 경우에 서버가 직접 다운로드하려면 클라이언트 기본값을 응답하지 않습니다.
pbuilder
. 이것은 즉시 사용 가능합니다. 또한 zeroconf
(2016 년)에 대한 지원이있는 것처럼 보이지만 아직 끝까지 작동하지 못했습니다.
가장 쉬운 해결책 중 하나는 apt-proxy를 설정하는 것입니다.
https://help.ubuntu.com/community/AptProxy 에서 우분투 문서를 읽으십시오.
debmirror
유틸리티를 사용하여 로컬 미러를 설정하는 것이 좋습니다.
다음은 예시입니다.
debmirror --progress --verbose --nosource --method=ftp --passive \
--host=ftp.osuosl.org --root=pub/ubuntu \
--dist=lucid,lucid-updates,lucid-security,lucid-backports \
--section=main,restricted,universe,multiverse --arch=amd64 \
/d2/ftp/mirror/ubuntu-lucid
나는 이것을 일주일에 한 번 정도 실행하고 하나 이상의 "패치 레벨"을 설정하기위한 기초로 사용합니다. 예를 들어 ...
cd /d2/ftp/mirror/
cp -al ubuntu-lucid ubuntu-lucid-20100908
그러면 트리의 연결된 사본이 생성되며 (디스크 공간이 거의 사용되지 않음) 각 로컬 서버를 적절한 소스로 지정할 수 있습니다.
apt-cacher
설정하기가 가장 쉽지 않았으며 dist-upgrade에서도 살아남지 못합니다.
squid-deb-proxy
서버, squid-deb-proxy-client
클라이언트에 설치 하십시오 . zeroconf Avahi를 사용하므로 구성이 필요하지 않습니다.
단순한 뎁 이상을 캐시하려는 경우 오징어를 귀찮게하지 않을 것입니다. 다음은 Apache Traffic Server입니다. http://trafficserver.readthedocs.org