Gentoo Logo

1.  Witamy w Portage

Portage to najlepszy istniejący program do zarządzania oprogramowaniem. Żadna inna dystrybucja Linuksa nie może się pochwalić równie kompleksowym, konfigurowalnym i użytecznym narzędziem jak to napisane przez deweloperów Gentoo.

Portage zostało napisane w dwóch językach skryptowych, Pythonie i Bashu, dzięki czemu sposób jego działania jest bardzo przejrzysty nawet dla niezbyt biegłych w programowaniu użytkowników.

Większość użytkowników pracuje z Portage przy pomocy narzędzia emerge. Aby uzyskać więcej informacji na temat tego programu, wystarczy wpisać:

Listing 1.1: Czytanie man emerge

$ man emerge

1.  Drzewo Portage

Ebuildy

Kiedy mówimy o pakietach to tak naprawdę mamy na myśli programy dostępne dla użytkowników Gentoo w drzewie Portage. Drzewo to jest zbiorem ebuildów, czyli plików zawierających wszelkie informacje, które są niezbędne do zarządzania oprogramowaniem (instalacja, wyszukiwanie, inne zapytania...). Domyślnie kolekcja ebuildów znajduje się w katalogu /usr/portage.

Za każdym razem gdy zażądamy od Portage wykonania jakiegoś zadania związanego z naszym oprogramowaniem użyje ono jako podstawy swojego działania informacji zawartych w kolekcji ebuildów. Stąd też warto w miarę często uaktualniać swoje drzewo Portage tak, aby system wiedział o nowych wersjach programów, poprawkach do nich, etc.

Uaktualnianie drzewa Portage

Drzewo Portage uaktualniamy zazwyczaj za pomocą narzędzia rsync. Uaktualnienie to wykonuje się w stosunkowo prosty sposób dzięki jednemu z parametrów polecenia emerge, dzięki któremu komenda ta zadziała jak nakładka na rsync:

Listing 1.1: Uaktualnianie drzewa Portage

# emerge --sync

Jeśli nie jest możliwe użycie rsync w wyniku jakichś ograniczeń narzuconych przez różnego rodzaju firewalle to możliwa jest aktualizacja drzewa Portage przy użyciu jednego z generowanych codziennie snapshotów. Program emerge-webrsync automatycznie pobierze odpowiednie pliki i zainstaluje je w systemie.

Listing 1.1: Uruchamianie emerge-webrsync

# emerge-webrsync

1.  Zarządzanie oprogramowaniem

Wyszukiwanie oprogramowania

Do wyszukiwania w drzewie Portage konkretnych programów można użyć funkcji wbudowanych w program emerge. Domyślnie emerge --search wypisze wszystkie zawierające dane wyrażenie nazwy pakietów.

Na przykład poszukajmy wszystkich pakietów zawierających literki "pdf" w nazwie:

Listing 1.1: Wyszukiwane pakietów z pdf w nazwie

$ emerge --search pdf

By przeszukiwać pakiety również po opisie pakietu, nie tylko po jego nazwie należy dopisać dodatkowo parametr --searchdesc (lub krócej -S).

Listing 1.1: Wyszukiwanie wszystkich związanych z pdf paczek

$ emerge --searchdesc pdf

Kiedy przyjrzymy się wynikowi tego polecenia zauważymy, że dostarcza on wielu ciekawych informacji. Zawartość i opisy poszczególnych pól są dość przejrzyste i nie powinny przysporzyć nikomu problemów. Z tego względu nie będziemy ich tu szerzej omawiać.

Listing 1.1: Przykładowy wynik polecenia emerge --search

*  net-print/cups-pdf
      Latest version available: 1.5.2
      Latest version installed: [ Not Installed ]
      Size of downloaded files: 15 kB
      Homepage:    http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
      Description: Provides a virtual printer for CUPS to produce PDF files.
      License:     GPL-2

Instalowanie oprogramowania

Instalacja znalezionych w ten sposób w Portage programów jest prosta i sprowadza się do dodania do polecenia emerge nazwy programu do zainstalowania. Dla przykładu zainstalujemy sobie gnumeric:

Listing 1.1: Instalacja gnumeric

# emerge gnumeric

W związku z tym, że wiele aplikacji do prawidłowego działania potrzebuje innych programów, instalacja którejś paczki może nieść ze sobą potrzebę zainstalowania także jej zależności. Nie ma powodu do zmartwień, to nie RPM-y - Portage doskonale radzi sobie z zależnościami. By dowiedzieć się, jakie zależności zostaną zainstalowane z danym programem należy dodać przełącznik --pretend do zwykłej komendy instalującej program. Na przykład:

Listing 1.1: Udajemy, że chcemy zainstalować gnumeric

# emerge --pretend gnumeric

Kiedy zostanie wydane polecenie dla Portage by zainstalowało jakiś program, z Internetu zostaną pobrane wszystkie niezbędne, nieznajdujące się na dysku pliki zawierające kod źródłowy. Domyślnie są one przechowywane w katalogu /usr/portage/distfiles. Następnie program zostanie rozpakowany, skompilowany i zainstalowany. Aby Portage jedynie pobrało potrzebne pliki, należy dodać opcję --fetchonly do komendy emerge:

Listing 1.1: Pobieranie kodu źródłowego gnumeric

# emerge --fetchonly gnumeric

Wyszukiwanie dokumentacji do zainstalowanych pakietów

Wiele pakietów jest publikowanych jest wraz z dokumentacją. Czasem flaga USE doc określa czy dokumentacja dla danego pakietu zostanie zainstalowana czy nie. Informację o tym czy dany pakiet korzysta z flagi doc można uzyskać za pomocą następującego polecenia: emerge -vp <nazwa pakietu>.

Listing 1.1: Sprawdzenie czy pakiet używa flagi doc.

(Oczywiście alsa-lib to tylko przykład)
# emerge -vp alsa-lib
[ebuild  N    ] media-libs/alsa-lib-1.0.14_rc1  -debug +doc 698 kB

Najlepszym sposobem uaktywnienia flagi USE doc jest wykonanie tego dla jednego pakietu przy użyciu pliku /etc/portage/package.use tak, aby pobrać dokumentację jedynie dla programu, którym jesteśmy zainteresowani. Uaktywnienie tej flagi globalnie, może powodować błędy wywoływane przez zapętlające się zależności. Aby dowiedzieć się więcej należy przeczytać rozdział podręcznika dotyczący (flag USE).

Dokumentacja do zainstalowanego już pakietu na ogół znajduje się w podkatalogu o nazwie takiej samej jak pakiet, w katalogu /usr/share/doc. Można wyświetlić listę wszystkich zainstalowanych plików za pomocą narzędzia equery, które jest częścią pakietu app-portage/gentoolkit.

Listing 1.1: Lokalizowanie dokumentacji pakietu

# ls -l /usr/share/doc/alsa-lib-1.0.14_rc1
total 28
-rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz
-rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x 2 root root 8560 May 17 21:54 html
-rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz

(Można też użyć equery do zlokalizowania plików dokumentacji)
# equery files alsa-lib | less
media-libs/alsa-lib-1.0.14_rc1
* Contents of media-libs/alsa-lib-1.0.14_rc1:
/usr
/usr/bin
/usr/bin/alsalisp
(Wyjście programu zostało skrócone)

Usuwanie oprogramowania

Do usuwania zainstalowanych programów służy polecenie emerge --unmerge. Nakaże ono Portage usunięcie wszystkich plików dodanych w procesie instalacji programu, z pominięciem jednak tych plików, które od instalacji programu zostały zmienione. Najczęściej chodzi tu o pliki konfiguracyjne, a pozostawienie ich na dysku umożliwia łatwe wznowienie pracy z programem w przypadku, gdy w przyszłości program zostanie ponownie zainstalowany.

W tym dość przejrzystym procesie kryje się pewna pułapka: Portage nie sprawdza czy pakiet, który ma być usunięty nie jest zależnością innego zainstalowanego programu. Jeśli jednak jest to program niezbędny dla prawidłowego działania systemu, pojawi się ostrzeżenie.

Listing 1.1: Usuwanie gnumeric z systemu

# emerge --unmerge gnumeric

Gdy program zostanie usunięty, jego zależności nie są usuwane razem z nim, ale pozostają na dysku. Aby odszukać i usunąć niepotrzebne w systemie zależności używamy polecenia emerge --depclean. Omówimy je dokładniej nieco później.

Uaktualnianie systemu

Aby utrzymać swój system w dobrej kondycji (nie wspominając już o instalacji najnowszych poprawek związanych z bezpieczeństwem), należy dość często go uaktualniać. W związku z tym, że w tym procesie Portage porównuje zainstalowane oprogramowanie z ebuildami z drzewa Portage, należy najpierw pobrać jego aktualną wersję. Kiedy już je zaktualizujemy przychodzi czas na właściwe uaktualnienie systemu. Dokonujemy tego poleceniem emerge --update world. W poniższym przykładzie skorzystamy także z opcji --ask, która spowoduje wyświetlenie listy pakietów do aktualizacji, a następnie pytania czy na pewno chcemy je zaktualizować.

Listing 1.1: Uaktualnianie systemu

# emerge --update --ask world

Portage znajdzie wszystkie bezpośrednio zainstalowane przez użytkownika aplikacje (znajdują się ona na liście w pliku /var/lib/portage/world), ale pominie uaktualnienia ich zależności. Aby uaktualnić całe oprogramowanie wraz z zależnościami, należy dodać jeszcze argument --deep:

Listing 1.1: Uaktualnienie całego systemu

# emerge --update --deep world

W związku z tym, że poprawki związane z bezpieczeństwem zdarzają się nie tylko w programach zainstalowanych bezpośrednio, ale również w ich zależnościach zalecamy częste uruchamianie tego polecenia.

Jeżeli ostatnio zmieniane były (flagi USE), polecamy również dodanie do całej tej linii poleceń argumentu --newuse. Portage sprawdzi wtedy czy zmiany we flagach USE niosą ze sobą potrzebę przekompilowania i przeinstalowania którychś z zainstalowanych programów:

Listing 1.1: Przeprowadzenie pełnego uaktualnienia

# emerge --update --deep --newuse world

Metapakiety

Niektóre z pakietów w drzewie Portage nie mają żadnej zawartości, ale służą do instalacji całych kolekcji innych pakietów. Doskonałym przykładem takiego zestawu jest pakiet kde-meta, który służy do instalowania kompletnego środowiska graficznego. Możemy dzięki jego istnieniu przy pomocy jednego polecenia dodać do systemu wszystkie programy, biblioteki oraz zależności związane z KDE.

Jeśli kiedykolwiek zdarzy nam się posiadać taki pakiety zainstalowany w systemie, będziemy mieli pewien problem z jego odinstalowaniem. Zwykłe wpisanie emerge --unmerge poczyni stosunkowo małe spustoszenie w niepotrzebnych nam już plikach, ponieważ ogromna ilość zależności pozostanie w systemie.

Portage jest w stanie poradzić sobie z tego typu "osieroconymi" zależnościami, ale najpierw należy w pełni uaktualnić swój system, uwzględniając przy tym również zmiany we flagach USE. Następnie uruchamiamy wspomniane już wcześniej polecenie emerge --depclean, aby usunąć "osierocone" zależności, a kiedy już skończymy je odinstalowywać przebudowujemy wszystkie programy, które wcześniej były dynamicznie z nimi zlinkowane, a teraz już ich nie potrzebują.

Cały proces sprowadza się do wpisania trzech prostych poleceń:

Listing 1.1: Usuwanie osieroconych zeleżności

# emerge --update --deep --newuse world
# emerge --depclean
# revdep-rebuild

Program revdep-rebuild znajduje się w pakiecie gentoolkit wraz z kilkoma innymi bardzo przydatnymi programami. Aby używać programu, należy oczywiście najpierw zainstalować ten pakiet.

Listing 1.1: Instalacja pakietu gentoolkit

# emerge gentoolkit

1.  Licencje

Zaczynając od wersji 2.1.7 Portage pozwala na akceptację lub odrzucenie oprogramowania na podstawie jego licencji. Wszystkie pakiety znajdujące się w drzewie zawierają wpis LICENSE w swoich plikach ebuild. Uruchomienie polecenia emerge --search nazwapakietu pozwoli nam na zapoznanie się z licencją posiadaną przez daną aplikację.

Domyślnie, Portage akceptuje wszystkie licencje oprócz End User License Agreements (EULA), gdzie wymagane jest przeczytanie i podpisanie zgody.

Zmienną kontrolującą akceptację licencji jest ACCEPT_LICENSE. Zmianę jej wartości można dokonać w pliku /etc/make.conf:

Listing 1.1: Domyślna wartość zmiennej ACCEPT_LICENSE w pliku /etc/make.conf

ACCEPT_LICENSE="* -@EULA"

W przypadku takiej konfiguracji, pakiety wymagające działania ze strony użytkownika do zaakceptowania licencji EULA nie zostaną zainstalowane. Wszystkie inne aplikacje zostaną zainstalowane bez przeszkód.

Zmienną ACCEPT_LICENSE możemy ustawić globalnie w pliku /etc/make.conf lub oddzielnie dla każdego pakietu w pliku /etc/portage/package.license.

Dla przykładu, gdy chcemy zaakceptować licencję truecrypt-2.7 dla pakietu app-crypt/truecrypt, do pliku /etc/portage/package.license należy dodać następujący wpis:

Listing 1.1: Określenie licencji dla truecrypt w pliku package.license

app-crypt/truecrypt truecrypt-2.7

W tym przypadku Portage, pozwoli nam na instalację truecrypt w wersji, która będzie posiadała licencję truecrypt-2.7, a nie dopuści do instalacji aplikacji opartej na licencji truecrypt-2.8.

Ważne: Licencje przechowywane są w katalogu /usr/portage/licenses natomiast grupy licencji w /usr/portage/license_groups. Każdy wpis będący wpisany dużymi literami jest nazwą grupy. Małymi literami określone są nazwy pojedynczych licencji.

Nazwy grup licencji określonych w zmiennej ACCEPT_LICENSE powinny zaczynać się od znaku @. W poniższym przykładzie znajdziemy wpis, w którym globalnie zaakceptowano grupę licencji GPL-compatible, wraz z kilkoma innymi grupami i pojedynczymi nazwami licencji:

Listing 1.1: Zmienna ACCEPT_LICENSE w pliku /etc/make.conf

ACCEPT_LICENSE="@GPL-COMPATIBLE @OSI-APPROVED @EULA atheros-hal BitstreamVera"

Gdy chcemy instalować w naszym systemie jedynie darmowe oprogramowanie i dokumentację powinniśmy skorzystać z poniższych ustawień:

Listing 1.1: Używanie tylko darmowych licencji

ACCEPT_LICENSE="-* @FREE"

W tym przypadku słowo "free", zostało w większości zdefiniowane w dokumentach FSF oraz OSI. Każdy pakiety, który nie spełni tych wymagań odnośnie licencji, nie zostanie zainstalowany w naszym systemie.

1.  Kiedy Portage narzeka

...na sloty, virtuale, gałęzie, architektury i profile

Jak już wcześniej zaznaczaliśmy, Portage jest potężnym narzędziem i posiada możliwości jakich nie ma żaden inny program do zarządzania oprogramowaniem. Postaramy się teraz w skrócie przedstawić kilka aspektów pracy z Portage.

W Portage możliwe jest posiadanie kilku różnych wersji jednego programu. Podczas gdy inne dystrybucje obchodzą problem nadając po prostu takim pakietom różne numery porządkowe, jak np. freetype i freetype2 Portage wykorzystuje tu technologię tzw. slotów. Każdy ebuild posiada osobny slot dla wersji programu, którą reprezentuje, więc ebuildy różnych wersji programu mogą koegzystować w jednym systemie. Na przykład paczka freetype posiada ebuildy z ustawionymi wartościami SLOT="1" i SLOT="2".

Są również pakiety, które wykonują te same czynności, ale w różny sposób. Doskonałym przykładem takiego programu są loggery systemowe: metalogd, sysklogd i syslog-ng. Aplikacje, które do prawidłowego działania potrzebują loggera systemowego nie mogą posiadać w zależnościach jedynie np. metalogd, ponieważ pozostałe programy z tej grupy również są w stanie spełnić tę zależność. Do tego właśnie służą Virtuale. Każdy z loggerów systemowych dostarcza po prostu virtual/syslog, który jest jednocześnie zależnością dla innych programów.

Oprogramowanie znajdujące się w drzewie Portage jest podzielone na gałęzie. Domyślnie używana jest gałąź stabilna dla danej architektury. Nowe i nieprzetestowane programy są dodawane do gałęzi niestabilnej, czyli testowej. Dopóki ich niezawodność nie zostanie potwierdzona i nie zostaną przeniesione do gałęzi stabilnej, Portage nie zainstaluje ich, chociaż ebuildy nowszych wersji będą się znajdowały w drzewie.

Niektóre programy są dostępne tylko dla określonych architektur. Czasem na innych wcale nie działają, czasem potrzebują jeszcze nieco testów, może się też zdarzyć, że deweloper danego programu nie ma po prostu czasu lub możliwości, aby przetestować taki pakiet na różnych architekturach.

Każdej instalacji Gentoo przypisany jest określony profil, który zawiera między innymi listę pakietów, które są niezbędne do prawidłowego działania systemu.

Zablokowane pakiety

Listing 1.1: Ostrzeżenie przed blokadą pakietu w Portage (z opcją --pretend)

[blocks B     ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)

Listing 1.1: Ostrzeżenie Portage przed blokadą pakietu (bez opcji --pretend)

!!! Error: the mail-mta/postfix package conflicts with another package.
!!!        both can't be installed on the same system together.
!!!        Please use 'emerge --pretend' to determine blockers.

W ebuildach znajdują się określone pola, które informują Portage na temat zależności danego programu. Są dwa rodzaje takich zależności: Zależności niezbędne do zbudowania programu - deklarowane przez DEPEND oraz zależności niezbędne do jego uruchomienia - deklarowane jako RDEPEND. Kiedy któraś z tych zależności jest niekompatybilna z jakimś virtualem lub pakietem, jest włączana blokada.

Pomimo tego, że obecnego wersje Portage potrafią radzić sobie z mniej poważnymi blokadami bez ingerencji użytkownika napotkamy na sytuacje, w których nasza pomoc okaże się niezbędna.

Są dwie możliwości na pozbycie się blokady: Nie instalować programu lub usunąć pakiet, który go blokuje. W podanym powyżej przykładzie mogliśmy wybrać pomiędzy rezygnacją z instalacji postfix lub usunięciem ssmtp.

Możemy również zauważyć wzajemne blokowanie się pakietów, takich jak na przykład <media-video/mplayer-1.0_rc1-r2. W tym przypadku należy zaktualizować pakiet do najnowszej wersji co pomoże usunąć blokadę.

Może również się zdarzyć, że blokują się pakiety, które nie są jeszcze zainstalowane. W takim rzadkim przypadku należy się dokładnie zastanowić czemu oba mają być zainstalowane. Zwykle można sobie poradzić tylko z jednym z tych pakietów. Jeśli nie jest to możliwe prosimy o zgłoszenie błędu.

Zamaskowane pakiety

Listing 1.1: Ostrzeżenie Portage o zamaskowanych pakietach

!!! all ebuilds that could satisfy "bootsplash" have been masked.

Listing 1.1: Ostrzeżenie Portage o zamaskowanych pakietach - z podaniem przyczyny

!!! possible candidates are:

- gnome-base/gnome-2.8.0_pre1 (masked by: ~x86 keyword)
- lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
- sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
- dev-util/cvsd-1.0.2 (masked by: missing keyword)
- games-fps/unreal-tournament-451 (masked by: package.mask)
- sys-libs/glibc-2.3.2-r11 (masked by: profile)
- net-im/skype-2.1.0.81 (masked by: skype-eula license(s))

Jeśli zechcemy zainstalować paczkę, która nie jest dostępna dla naszego systemu dostaniemy właśnie taki komunikat. Możemy wtedy zainstalować inny spełniający te same funkcje, ale dostępny dla naszego systemu program lub poczekać aż pakiet zostanie odmaskowany. Maskowanie pakietów nie odbywa się bez przyczyny:

  • Słowo kluczowe ~arch oznacza, że aplikacja nie została jeszcze dostatecznie sprawdzona na naszej architekturze, aby znaleźć się w gałęzi stabilnej. Zwykle w takim przypadku wystarczy poczekać kilka dni (rzadziej tygodni) i spróbować ponownej jej instalacji.
  • Słowo kluczowe -arch lub -* oznacza, że program nie działa na naszej architekturze. Jeśli jednak aplikacja działa i są dowody na poparcie tej tezy prosimy o zgłoszenie tego na naszą Bugzillę.
  • Komunikat missing keyword oznacza, że aplikacja nie została jeszcze przetestowana na tej architekturze. W takim przypadku należy poprosić któregoś z deweloperów zajmujących się tymi sprawami o przetestowanie pakietu lub uczynić to własnoręcznie i zgłosić wyniki swoich badań na Bugzillę.
  • Komunikat package.mask oznacza, że pakiet jest uszkodzony, niestabilny lub co gorsza w ogóle nie nadaje się do użytku.
  • Komunikat z tekstem profile oznacza, że pakiet nie pasuje do naszego profilu systemowego i gdybyśmy go zainstalowali mógłby zepsuć nasz system.
  • Komunikat license oznacza, że licencja pakietu nie zgadza się z ustawieniem zmiennej ACCEPT_LICENSE. W takim wypadku należy wyraźniej zaznaczyć akceptację takiej licencji poprzez wpis w pliku /etc/make.conf lub /etc/portage/package.license. W rozdziale Licencje możemy znaleźć więcej informacji na ten temat.

Brakujące zależności

Listing 1.1: Komunikat Portage o brakujących zależnościach

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".

!!! Problem with ebuild sys-devel/gcc-3.4.2-r2
!!! Possibly a DEPEND/*DEPEND problem.

Aplikacja, którą próbujemy zainstalować jest zależna od pakietu, który nie jest dostępny dla danej architektury. Należy sprawdzić na Bugzilli czy problem został już zgłoszony i ewentualnie go zgłosić, jeśli nie zrobił tego ktoś inny. Jeśli nie są mieszane różne typów gałęzi Portage w jednym systemie to problem ten nie powinien wystąpić i zwykle oznacza błąd w drzewie.

Niejasna nazwa pakietu

Listing 1.1: Ostrzeżenie Portage dotyczące niejasnych nazw pakietów

[ Results for search key : listen ]
[ Applications found : 2 ]

*  dev-tinyos/listen [ Masked ]
      Latest version available: 1.1.15
      Latest version installed: [ Not Installed ]
      Size of files: 10,032 kB
      Homepage:      http://www.tinyos.net/
      Description:   Raw listen for TinyOS
      License:       BSD

*  media-sound/listen [ Masked ]
      Latest version available: 0.6.3
      Latest version installed: [ Not Installed ]
      Size of files: 859 kB
      Homepage:      http://www.listen-project.org
      Description:   A Music player and management for GNOME
      License:       GPL-2

!!! The short ebuild name "listen" is ambiguous. Please specify
!!! one of the above fully-qualified ebuild names instead.

Program, który próbujemy zainstalować ma nazwę, którą posiada więcej niż jeden pakiet. Aby rozwiązać ten problem wystarczy dokładniej sprecyzować co chcemy zainstalować dodając przed nazwę programu kategorię, do której on należy.

Wzajemnie od siebie zależne pakiety

Listing 1.1: Ostrzeżenie Portage na temat wzajemnie od siebie zależnych pakietów

!!! Error: circular dependencies:

ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2

Sprawa jest prosta. Dwa pakiety (lub więcej), które próbujemy zainstalować są od siebie wzajemnie zależne i w związku z tym nie mogą zostać zainstalowane. Oznacza to błąd w drzewie Portage, który zostanie usunięty możliwie najszybciej od momentu jak pierwszy użytkownik zgłosi ten problem na Bugzillę.

Nieudane pobieranie

Listing 1.1: Komunikat Portage o nieudanym pobieraniu

!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
(...)
!!! Some fetch errors were encountered.  Please see above for details.

Oznacza to, że Portage nie było w stanie pobrać źródeł żądanej aplikacji, w związku z czym zostało zmuszone do zrezygnowania z jej instalacji i będzie instalowało kolejne programy z listy. Błąd najczęściej jest spowodowany wstawieniem złego adresu serwera w ebuildzie programu lub dlatego, że serwer lustrzany nie zdążył jeszcze się zsynchronizować. Możliwa jest również sytuacja, że serwer, na którym znajdują się źródła, z jakichś względów jest nieczynny.

Należy odczekać około godziny i spróbować ponownie zainstalować program.

Ochrona profilu systemu

Listing 1.1: Ostrzeżenie Portage dotyczące pakietu chronionego profilem systemowym

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.

Taki komunikat oznacza, że pakiet, który próbujemy usunąć jest kluczowy dla działania systemu. Znajduje się on na liście profilu systemowego jako niezbędny i w związku z tym nie zostanie usunięty.

Błędy przy sprawdzaniu plików z sumami kontrolnymi

Czasami przy instalacji pakietu pojawia się następujący błąd:

Listing 1.1: Błąd sprawdzania sumy kontrolnej

>>> checking ebuild checksums

!!! Digest verification failed:

Jest to znak nieprawidłowego działania Portage jednak częściej przyczyną jest pomyłka dewelopera, który popełnił błąd przy dodawaniu pakietu do drzewa.

Kiedy zobaczymy taki błąd nie należy samemu tworzyć nowych sum kontrolnych. Wydanie polecenia ebuild coś manifest nie naprawi problemu, a może go nawet pogłębić!

Zamiast tego powinniśmy odczekać godzinę lub dwie, aż ktoś naprawi uszkodzony plik. Jest wielce prawdopodobne, że błąd został już zgłoszony jednak musi upłynąć kilka chwil, zanim prawidłowy plik pojawi się w drzewie Portage. W czasie gdy będziemy czekać na rozwiązanie, powinniśmy sprawdzić Bugzille czy ktokolwiek już zgłosił problem z danym pakietem. Jeżeli nie, powinniśmy sami wypełnić i wysłać raport.

Po rozwiązaniu problemu, należy ponownie przeprowadzić aktualizację drzewa Portage, aby pobrać naprawiony plik z sumami kontrolnymi.

Ważne: Nie znaczy to, że aktualizację trzeba przeprowadzać kilka razy! Zgodnie z zapisem w polityce serwerów rsync (w czasie gdy uruchamiamy polecenie emerge --sync) użytkownik, który zbyt często aktualizuje drzewo zostanie zbanowany! Lepiej jest poczekać do następnej zaplanowanej aktualizacji niż niepotrzebnie obciążać serwery rsync.

Zaktualizowano 2 marca 2010

Oryginalna wersja tego dokumentu została po raz ostatni zaktualizowana 22 maja 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: Wszystko to, co trzeba wiedzieć na temat Portage, aby móc przy jego pomocy skutecznie zarządzać systemem.

Donate to support our development efforts.

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