Gentoo Logo

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.

Zaktualizowano 12 lipca 2010

Oryginalna wersja tego dokumentu została po raz ostatni zaktualizowana 28 marca 2012. Jeśli chcesz pomóc w aktualizacji tego dokumentu do najnowszej wersji, skontaktuj się z Łukaszem Damentko, koordynatorem polskiego projektu tłumaczeń dokumentacji Gentoo.

Podsumowanie: Ten rozdział pomaga odkryć dodatkowe funkcje Portage.

Donate to support our development efforts.

Copyright 2001-2012 Gentoo Foundation, Inc. Questions, Comments? Contact us.