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-replicatorNa 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"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}"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.*"Code: Select all
# /usr/bin/repcacheman Code: Select all
# /etc/init.d/http-replicator startCode: Select all
# rc-update add http-replicator defaultNiektó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Ż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: 0zmiana w /usr/bin/repcacheman w linii 204 i 205
Code: Select all
t[0] na t["MD5"]Code: Select all
portage.writemsgCode: Select all
portage_util.writemsgII. gentoo-rsync-mirror
1. Instalacja jest bardzo prosta bo w portage jest już odpowiedni ebuild
Code: Select all
emerge gentoo-rsync-mirror
etc-updateKonfiguracje 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/portageCode: Select all
/usr/portageJeś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/"Code: Select all
SRC="rsync://rsync.pl.gentoo.org/gentoo-portage"
DST="/usr/portage/"3. Uruchomienie
Code: Select all
/etc/init.d/rsyncd startCode: Select all
rc-update add rsyncd defaultCode: Select all
SYNC="rsync://adres_naszego_rsynca/gentoo-portage"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!!
