|
1.
Funkcje Portage
Portage posiada szereg dodatkowych funkcji, które potrafią znacznie uprzyjemnić
pracę z Gentoo. Wiele z nich opiera się na zewnętrznych programach, które
zwiększają wydajność, stabilność i bezpieczeństwo pracy.
Aby włączyć lub wyłączyć określone dodatkowe funkcje Portage należy odpowiednio
zmienić zmienną FEATURES w pliku /etc/make.conf. Zmienna ta
to podzielona spacjami lista nazw dodatkowych możliwości. W niektórych
przypadkach, aby móc korzystać z pewnych funkcji trzeba również zainstalować
dodatkowe oprogramowanie.
Nie wszystkie funkcje, które Portage obsługuje są tutaj wymienione. By poznać
wszystkie funkcje, należy przeczytać dokumentację make.conf:
Listing 1.1: Warto zajrzeć na stronę man pliku make.conf |
$ man make.conf
|
By dowiedzieć się, jakie FEATURES są standardowo włączone, należy uruchomić
emerge --info i poszukać zmiennej FEATURES za pomocą programu grep:
Listing 1.1: Sprawdzanie czy FEATURES są już ustawione |
$ emerge --info | grep FEATURES
|
1.
DistCC
Czym jest DistCC?
Distcc to program, dzięki któremu możemy rozłożyć obciążenie związane z
kompilacją pomiędzy kilka niekoniecznie identycznych maszyn. Klient
distcc wysyła wszystkie potrzebne informacje do dostępnych serwerów
DistCC (na których jest uruchomiony distccd), które następnie kompilują
części kodu źródłowego dla klienta. Końcowym wynikiem jest krótszy czas
kompilacji.
Dokładniejsze informacje na temat distcc (oraz informacje na temat tego,
jak używać distcc w Gentoo) można odnaleźć Dokumentacji Distcc Gentoo.
Instalacja DistCC
Distcc jest dostarczany z graficznym monitorem, dzięki któremu możliwe jest
obserwowanie postępu zadań, które komputer wysłał do serwerów distcc. Jeśli
używany jest Gnome, należy umieścić "gnome" w ustawieniach flag USE.
Jeśli nie jest zainstalowany Gnome, a mimo to chcielibyśmy mieć możliwość
monitorowania distcc, należy umieścić w flagach USE "gtk".
Listing 1.1: Instalacja Distcc |
# emerge distcc
|
Używanie distcc z Portage
Najpierw należy dodać distcc do zmiennej FEATURES w pliku
/etc/make.conf. Następnie należy dostosować zmienną MAKEOPTS do
swoich potrzeb. Zwykle ma ona postać -jX, gdzie X to liczba
procesorów, na których uruchomiony jest distccd (włącznie z komputerem,
na którym teraz pracujemy) powiększona o jeden. Czasem inne wartości od tych
zalecanych przynoszą lepsze rezultaty.
Teraz trzeba uruchomić distcc-config i wprowadzić listę dostępnych
serwerów DistCC. W naszym prostym przykładzie zakładamy, że dostępne serwery
DistCC to: 192.168.1.102 (aktualny host), 192.168.1.103 i
192.168.1.104 (dwa "zdalne" hosty):
Listing 1.1: Użycie trzech serwerów DistCC |
# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"
|
Trzeba też pamiętać o uruchomieniu demona distccd na zdalnych hostach:
Listing 1.1: Uruchamianie demona distcc |
# rc-update add distccd default
# /etc/init.d/distccd start
|
1.
ccache
Czym jest ccache?
ccache jest szybkim cache kompilatora. Dzięki niemu pliki pośrednie
powstające w trakcie kompilacji będą cache'owane i podczas rekompilacji
programu czas budowania plików wynikowych zostanie znacznie skrócony. Przy
pierwszy uruchomieniu ccache kompilacja przebiega znacznie dłużej niż w
normalnych warunkach. Kolejne rekompilacje będą już szybsze. ccache przydaje
się jedynie w przypadku gdy rekompilujemy te same aplikacje kilka razy, z tego
powodu aplikacja ta skierowana jest do programistów.
Szczegóły na temat ccache można odnaleźć na stronie domowej ccache.
Ostrzeżenie:
ccache w wielu przypadkach jest powodem błędów kompilacji. Jets to
spowodowane przypadkami, w których ccache zachowa stare obiekty bądź
uszkodzone pliki, co może prowadzić do braku możliwości zainstalowania
pakietu. W przypadku gdy staniemy się ofiarą takiego błędu (jeśli otrzymamy
błąd "File not recognized: File truncated") należy spróbować ponownie
skompilować aplikację wyłączając obsługę ccache (FEATURES="-ccache" w
pliku /etc/make.conf) przed zgłoszeniem błędu. Zalecanym
jest, w przypadku osób nie zajmujących się rozwojem oprogramowania, o nie
używanie ccache.
|
Instalacja ccache
Instalowanie ccache w Gentoo jest bardzo proste - jedyne, co należy
zrobić, to zainstalować odpowiedni pakiet:
Listing 1.1: Instalacja ccache |
# emerge ccache
|
Portage i ccache
Otwieramy plik /etc/make.conf i zmieniamy FEATURES tak, aby
zawierało słowo kluczowe ccache oraz dodajemy zmienną CCACHE_SIZE o
wartości "2G".
Listing 1.1: Zmiana CCACHE_SIZE w /etc/make.conf |
CCACHE_SIZE="2G"
|
Aby sprawdzić czy ccache działa poprawnie, należy sprawdzić statystyki.
Ponieważ Portage używa innych katalogów domowych ccache, należy ustawić zmienną
CCACHE_DIR na początku polecenia:
Listing 1.1: Przeglądanie statystyk ccache |
# CCACHE_DIR="/var/tmp/ccache" ccache -s
|
Katalog /var/tmp/ccache jest domyślną lokalizacją ccache w
Portage. Jeżeli chcemy zmodyfikować tę pozycję należy ustawić zmienną
CCACHE_DIR w pliku /etc/make.conf.
Jednak gdy będziemy uruchamiać polecenie ccache, będzie ono odwoływało
się do domyślnej lokalizacji ${HOME}/.ccache, dlatego też musimy
za każdym razem ustawiać zmienną CCACHE_DIR, gdy będziemy chcieli
zobaczyć statystyki.
Używanie ccache dla kompilacji programów w C spoza Portage
Jeśli ccache ma być używane do kompilacji programów w C, ale nie znajdujących
się w Portage, należy dodać katalog /usr/lib/ccache/bin na
początku zmiennej PATH (przed wpisem /usr/bin). Robi się to przez
edytowanie pliku .bash_profile w naszym katalogu domowym. Użycie
.bash_profile jest jednym ze sposobów określenia zmiennej PATH.
Listing 1.1: Edytowanie .bash_profile |
PATH="/usr/lib/ccache/bin:/opt/bin:${PATH}"
|
1.
Pakiety binarne
Tworzenie pakietów binarnych
Portage umożliwia pracę z prekompilowanymi pakietami. Nie dostarczamy wprawdzie
ich zestawów użytkownikom (poza GRP, które wychodzą co kilka miesięcy wraz z
wydaniami Gentoo), ale mimo wszystko pozostawiamy możliwość korzystania z nich
w naszym oprogramowaniu.
Jeśli dany pakiet już jest zainstalowany, można użyć polecenia quickpkg,
które utworzy archiwum tar zawierające zainstalowane pliki (bardzo przydatne
przy robieniu kopii zapasowych). Jeśli nie jest zainstalowany, należy
skorzystać z polecenia emerge z opcją --buildpkg lub
--buildpkgonly.
Aby Portage domyślnie tworzyło binarne pakiety, wystarczy umieścić słowo
kluczowe buildpkg w zmiennej FEATURES.
Szersze możliwości budowania pakietów daje program catalyst. Wszystkie
informacje o nim znajdują się w Catalyst FAQ.
Instalacja prekompilowanych pakietów
Fakt, że Gentoo nie posiada repozytorium z prekompilowanymi pakietami nie
oznacza, że użytkownicy nie mogą stworzyć takiego samodzielnie. Aby z niego
korzystać, należy ustawić zmienną PORTAGE_BINHOST tak, aby na nie wskazywała.
Na przykład, jeżeli prekompilowane pakiety znajdują się pod adresem
ftp://buildhost/gentoo:
Listing 1.1: Konfiguracja zmiennej PORTAGE_BINHOST w pliku /etc/make.conf |
PORTAGE_BINHOST="ftp://buildhost/gentoo"
|
Za każdym razem, gdy chcemy zainstalować prekompilowany pakiet, musimy
skorzystać z parametru --getbinpkg razem z opcją --usepkg.
Pierwsza opcja nakazuje pobrać prekompilowany pakiet ze zdalnego serwera, druga
nakazuje emerge skorzystanie ze ściągniętego pakietu podczas instalacji.
Na przykład, aby zainstalować gnumeric z prekompilowanego pakietu:
Listing 1.1: Instalacja prekompilowanego gnumeric |
# emerge --usepkg --getbinpkg gnumeric
|
Więcej informacji o prekompilowanych pakietach znajduje się na stronie man
programu emerge.
Listing 1.1: Strona man programu emerge |
$ man emerge
|
1.
Pobieranie plików
Pobieranie równoległe
Kiedy instalujemy kilka pakietów, Portage może pobierać pliki źródłowe dla
pozostałych pakietów, które są na liście nawet podczas kompilacji innego
programu, przez co skraca się czas całej operacji. Aby uaktywnić tę funkcję
należy dodać wartość "parallel-fetch" do zmiennej FEATURES.
Userfetch
Kiedy uruchomimy Portage jako root, wpis FEATURES="userfetch" pozwoli na
odrzucenie przez Portage uprawnień administratora podczas ściągania plików
źródłowych dla pakietów. Dzięki temu uzyskamy małą poprawę bezpieczeństwa.
|