Page 1 of 1

HOWTO: Lokalny serwer rsync i proxy dla distfiles

Posted: Fri Oct 22, 2004 1:46 pm
by milu
Masz kilka komputerów z Gentoo w swojej sieci?

Zoptymalizuj wykorzystanie łącza przy pobieraniu pakietów z Portage i przyspiesz swoją kompilację przez zmniejszenie czasu na ściąganie plików.
Nie dość, że zmniejszysz obciążenie swojego łącza to odciążysz serwery gentoo.

Całość tego rozwiązania składa się z dwóch części:
I. Http-Replicator - krótko mówiąc proxy dla distfiles
II. gentoo-rsync-mirror - lokalny serwer rsync serwujący drzewko portage

I. Http-Replicator

1. Należy pobrać ebuild dla tego programiku: http://www.updatedlinux.com/replicator/ ... .5.tar.bz2

Zainstalować http-replikator (Jak zainstalować ebuild spoza portage znajdziesz tutaj)

Code: Select all

# emerge http-replicator
2. Teraz pozostaje konfiguracja:
Na wszystkich komputerach z gentoo w sieci lokalnej(na serwerze także) w /etc/make.conf należy dodać

Code: Select all

http_proxy="http://mójserwerproxy:8080"
a także takie linie:

Code: Select all

#FETCHCOMMAND="/usr/bin/wget -t 5  --passive-ftp \${URI} -P \${DISTDIR}"
RESUMECOMMAND=" /usr/bin/wget -t 5 --passive-ftp  \${URI} -O \${DISTDIR}/\${FILE}"
3. Sprawdzenie konfiguracji i utworzenie cache'u replikatora
Ustawienia domyślne powinny wystarczyć ale profilaktycznie radzę sprawdzić kofigurację w /etc/http-replicator.conf u mnie trzeba było zmienić linijkę z hostami, które moga korzystać z replikatora:

Code: Select all

DAEMON_OPTS="$DAEMON_OPTS --ip 192.168.1.*"
potem utworzenie i uzupełnienie katalogu replikatora

Code: Select all

#  /usr/bin/repcacheman 
4. Uruchomienie replikatora

Code: Select all

#  /etc/init.d/http-replicator start
5. Dodanie replikatora do startu systemu

Code: Select all

# rc-update add http-replicator default
Należy pamiętać, że portage potrzebuje mirrorów. W tym celu dopisz GENTOO_MIRRORS="jakie_chcesz_serwery_gentoo" do /etc/make.conf i pamiętaj, żeby mirrory ftp ustawić na końcu jako że http-replicator robi tylko za serwer proxy dla http a nie dla ftp .

Niektóre pakiety w portage mają ustawione RESTRICT="nomirror". Standardowo nie pozwala to portage na korzystanie z mirrorów. Jest jednak na to sposób. Trzeba stworzyć plik /etc/portage/mirrors o zawartości:

Code: Select all

# Http-Replicator Override for FTP and RESTRICT="nomirror packages
local http://gentoo.src.pl http://gentoo.oregonstate.edu
Jeśli korzystasz z cron'a dodaj repcacheman do /etc/cron.daily. Skasuje to zduplikowane pliki pobrane na serwer i zaimportuje te, które zostały pobrane z ftp.

Żeby repcacheman działał szybko i efektywnie powinieneś kasować pliki, które pozostają w katalogu distfiles na serwerze po każdym uruchomieniu repcacheman.
Pliki te:
1.Nie istnieją już w Portage
2.Są niekompletne albo uszkodzone
3.To śmieci.

Uwaga!!! Jeśli korzystasz z ACCEPT_KEYWORDS="~x86" możesz natrafić na taki błąd:

Code: Select all

Verifying checksum's....
/usr/portage/distfiles/eog-2.8.0.tar.bz2
Traceback (most recent call last):
  File "/usr/bin/repcacheman", line 204, in ?
      if t[0]:
      KeyError: 0
Rozwiązaniem powyższego błędu jest:
zmiana w /usr/bin/repcacheman w linii 204 i 205

Code: Select all

t[0] na t["MD5"]
i w linii 167

Code: Select all

portage.writemsg
na

Code: Select all

portage_util.writemsg
Spowodowane jest to zmianami wprowadzanymi do nowych wersji portage(stabilna 2.0.50-r11 działa OK a niestabilna portage-2.0.51-rc9 wymaga zmian).

II. gentoo-rsync-mirror

1. Instalacja jest bardzo prosta bo w portage jest już odpowiedni ebuild

Code: Select all

emerge gentoo-rsync-mirror
etc-update
2. Konfiguracja
Konfiguracje gentoo-rsync-mirror można przeprowadzić na dwa sposoby. Pierwszy to taki, w którym jest tworzone oddzielne drzewko niezależne od tego, które znajduje się na serwerze a drugi to współdzielenie drzewka serwerowego.

Sposób pierwszy:
Jest on sposobem domyślnym - drzewko znajduje się w katalogu
/opt/gentoo-rsync-mirror/portage i powinno być ściągane przy użyciu
skryptu znajdującego się w instalacji /opt/gentoo-rsync-mirror/rsync-gentoo-portage.sh
Powinnien tam być ustawiony także odpowiedni(najszybszy dla Ciebie) publiczny serwer rsynca

Sposób drugi:
Można jednak skonfigurować to tak, żeby nasz serwer sync oferował drzewko portage z którego sam korzysta. W tym celu w pliku /etc/rsync/rsyncd.conf
zmieniamy linijkę

Code: Select all

/opt/gentoo-rsync/portage
na

Code: Select all

/usr/portage
.
Jeśli zamierzamy cyklicznie synchronizować serwer używając skryptu
/opt/gentoo-rsync-mirror/rsync-gentoo-portage.sh musimy jeszcze zmienić ustawienia w /etc/rsync/gentoo-mirror.conf - chodzi głównie o serwer rsynca i katalog z drzewkiem:

Code: Select all

 SRC="rsync://rsync.de.gentoo.org/gentoo-portage"
 DST="/opt/gentoo-rsync/portage/"
np. na:

Code: Select all

 SRC="rsync://rsync.pl.gentoo.org/gentoo-portage"
 DST="/usr/portage/"
Dodatkowo w /etc/rsync/rsyncd.motd możemy ustawić dowolny opis naszego serwera rsync.
3. Uruchomienie

Code: Select all

/etc/init.d/rsyncd start
4. Dodanie rsyncd do startu komputera

Code: Select all

rc-update add rsyncd default
5. Konfiguracja na pozostałych komputerach w sieci polega na dopisaniu albo zmianie w /etc/make.conf linijki:

Code: Select all

SYNC="rsync://adres_naszego_rsynca/gentoo-portage"
Na koniec pozostaje przetestowanie całego rozwiązania przez zsynchronizowanie lokalnego drzewka na naszym komputerze.

UWAGA!!!!!!
Zgodnie z netykietą Gentoo jeśli tworzymy prywatny mirror synca nie powinniśmy synchronizować drzewka częściej niż raz dziennie!!!

Powodzenia i szybkich synców!!