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.