Wielu administratorów gdy zaczyna swoją przygodę zarządza jedną/dwoma maszynami… Po pewnym czasie jest ich już kilka… W którymś momencie dostrzega się zalety wirtualizacji i na kilku maszynach fizycznych działa kilkanaście czy kilkadziesiąt maszyn wirtualnych. W takiej sytuacji pobieranie aktualizacji dla wszystkich maszyn potrafi mocno zabić łącze.

I w tym momencie zaczynamy się zastanawiać czy może nie warto byłoby zrobić własnego mirror’a paczek dla naszego ulubionego distro… do prywatnego użytku… synchronizowanego w nocy by nikomu nie przeszkadzać… i dostępnego nawet gdy będziemy offline… Zaczynamy liczyć miejsce i okazuje się że repozytorium Debiana dla architektury i386 to prawie 60GB (sic!), no ale mamy kilka maszynek z arch amd64 i tutaj też prawie 60GB - auć. W tym miejscu wielu dochodzi do wniosku że to jeszcze nie pora na własnego mirror’a 😃

Rozwiązaniem tego dylematu jest wykorzystanie approx’a, który działa jako cachujące proxy dla repozytoriów Debiania i Ubuntu. Pośredniczy on w pobieraniu plików zapisując kopię każdego w lokalnym cache’u. Czyli pierwsze pobranie zasysa paczkę z sieci, a kolejne odwołania do approx’a serwują już tę pobraną kopię. Ponadto przyjemne jest zachowanie approx’a, który samodzielnie utrzymuje “czystość” cachu usuwając starsze paczki i aktualizując nowe. Druga wielka zaleta tej aplikacji to lokalne składowanie tylko tych paczek które pobieramy - bo mało kto potrzebuje całego repozytorium - drastycznie zmniejsza to rozmiar takiego mirror’a. U mnie mirror ma raptem kilkaset megabajtów.

Instalacja i konfiguracja

Ponieważ paczka jest w domyślnych repozytoriach wystarczy:

apt-get install approx

i po chwili mamy działające proxy.

Domyślnie pliki składowane są w: /var/cache/approx - warto zadbać o odrobinę wolnego miejsca w tej lokalizacji.

Należy jeszcze skonfigurować odpowiednie repozytoria  w pliku konfiguracyjnym: /etc/approx/approx.conf - u mnie wygląda on tak:


debian          http://ftp.pl.debian.org/debian
security        http://security.debian.org/debian-security
volatile        http://volatile.debian.org/debian-volatile
backports       http://backports.debian.org/debian-backports

# The following are the default parameter values, so there is
# no need to uncomment them unless you want a different value.
# See approx.conf(5) for details.

$interface      any
$port           8080
$max_wait       30
#$max_rate      unlimited
#$user          approx
#$group         approx
#$syslog        daemon
#$pdiffs        true
#$verbose       false
#$debug         true

Po instalacji approx działa na porcie 8080 o czym trzeba pamiętać przy podawaniu URL’i w sources.list - mi to odpowiadało bo na porcie 80-tym mam odpalony serwer WWW pod jakieś śmieci… Ale Wam może odpowiadać uruchomienie approx’a na 80-tce.

Teraz restartujemy approx’a by przeładować konfigurację:

invoke-rc.d approx restart

Zostało skonfigurować plik /etc/apt/sources.list tak by wskazywał na nasze proxy. Należy to zrobić na każdej maszynce w naszej sieci by cała zabawa miała sens.

W przypadku Lenny’ego powinien on wyglądać mniej więcej tak:


deb     http://approx.costam.pl:8080/debian lenny main non-free contrib
deb-src http://approx.costam.pl:8080/debian lenny main non-free contrib

deb     http://approx.costam.pl:8080/security lenny/updates main contrib non-free
deb-src http://approx.costam.pl:8080/security lenny/updates main contrib non-free

deb     http://approx.costam.pl:8080/volatile lenny/volatile main contrib non-free
deb-src http://approx.costam.pl:8080/volatile lenny/volatile main contrib non-free

deb     http://approx.costam.pl:8080/backports lenny-backports-sloppy main

W przypadku Squeeze’a tak:


deb     http://approx.costam.pl:8080/debian squeeze main non-free contrib
deb-src http://approx.costam.pl:8080/debian squeeze main non-free contrib

deb     http://approx.costam.pl:8080/security squeeze/updates main contrib non-free
deb-src http://approx.costam.pl:8080/security squeeze/updates main contrib non-free

deb     http://approx.costam.pl:8080/debian squeeze-updates main non-free contrib
deb-src http://approx.costam.pl:8080/debian squeeze-updates main non-free contrib

deb     http://approx.costam.pl:8080/backports squeeze-backports main

No i na koniec sprawdzamy czy wszystko działa:

apt-get update

Możemy spróbować coś zainstalować i zobaczyć jak się spisze proxy.