Gentoo Logo

Ręczna naprawa zepsutego portage

1.  Ręczna naprawa portage

Wprowadzenie

Ten tekst wyjaśnia jak należy postępować, aby naprawić lub zaktualizować zepsutą instalację portage w przypadku gdy niemożliwe jest uruchomienie komendy emerge sys-apps/portage. Nie jest to trudny proces, ale wymaga dużo uwagi, dlatego radzimy dokładnie zapoznać się ze wszystkimi etapami naprawy.

Uwaga: Skrypt automatyzujący ten proces znajduję się pod tym adresem.

Ściąganie paczki z portage

Po pierwsze musimy pobrać na dysk spakowane źródła aktualnej wersji Portage. W przykładach posłużymy się wersją portage-2.1.1 (ponieważ jest ona stabilna w momencie pisania tego tekstu). Należy oczywiście zastąpić ją w poleceniach tą której się używa.

Ostrzeżenie: Jeśli zainstalowana wersja Pythona jest niższa niż 2.4 (sprawdza się to za pomocą python -V), należy wybrać wersję Portage która jest z nią kompatybilna. Jeśli Python jest w wersji co najmniej 2.3, należy użyć portage-2.1.1.tar.bz2. Dla Pythona 2.2 odpowiednia jest wersja portage-2.0.51.22.tar.bz2.

Czasem możliwe jest wykorzystanie portage do pobrania źródeł. Należy spróbować czy zadziała polecenie emerge --fetchonly sys-apps/portage. Jeśli nie działa, trzeba pobrać źródła ręcznie.

Listing 1.1: Pobieranie źródeł programem wget

# wget -P /usr/portage/distfiles http://distfiles.gentoo.org/distfiles/portage-2.1.1.tar.bz2

Po wykonaniu tego polecenia paczka ze źródłami zostanie zapisana jako /usr/portage/distfiles/portage-2.1.1.tar.bz2.

Zastępowanie zainstalowanej wersji

Następny krok to rozpakowanie paczki do tymczasowego katalogu, w przykładach tym katalogiem będzie /root/portage-recover.

Listing 1.2: Rozpakowywanie paczki

# cd /root
# mkdir portage-recover
# cd portage-recover
# tar xfj /usr/portage/distfiles/portage-2.1.1.tar.bz2

Następnie należy zastąpić pliki basha i pythona z zepsutej zainstalowanej w systemie wersji tymi z paczki. W tym celu należy wpisać:

Listing 1.3: Zastępowanie plików

# cd /root/portage-recover/portage-2.1.1
# cp -R pym bin /usr/lib/portage/

Jeśli nie używamy Gentoo na FreeBSD powinniśmy usunąć skrypt interfejsu sed ponieważ nie jest on już potrzebny, a dodatkowo może powodować problemy ze starszymi wersjami bash:

Listing 1.4: Usuwanie skryptu interfejsu sed

# rm -f /usr/lib/portage/bin/sed

Uwaga: Jeżeli przypadkowo odinstalowaliśmy wcześniej portage lub zgubiliśmy /etc/make.globals z innego powodu, należy skopiować również cnf/make.globals z powrotem do /etc, jeżeli nie zostanie to wykonane, portage może dziwnie się zachowywać.

Uwaga: Jeśli poprzednia wersja Portage była niższa niż 2.1, należy wpisać emerge --metadata przed przejściem do następnego kroku. Dzięki temu metadata ebuildów zostanie przebudowana do nowego formatu używanego przez wersje Portage nowsze niż 2.1. Wpisanie tego polecenie nie spowoduje żadnych uszkodzeń także na nowszych wersjach Portage, więc jeśli nie jest się pewnym używanej wersji, należy je po prostu wpisać.

Po wykonaniu tego polecenia portage powinno znów działać. Ostatnią czynnością jest wykonanie emerge sys-apps/portage.

Jeśli pojawi się błąd command not found po uruchomieniu emerge należy poprawić dowiązanie symboliczne:

Listing 1.5: Poprawiania dowiązania do emerge

# ln -s ../lib/portage/bin/emerge /usr/bin/emerge

Jeśli powyższy proces nie rozwiązał problemu to najprawdopodobniej to nie portage jest zepsute tylko coś innego. Niestety nie należy to już do tematyki tego dokumentu. W takim wypadku radzimy zapoznać się z listą najczęstszych problemów lub poszukać pomocy na Bugzilli.



Drukuj

Zaktualizowano 31 maja 2007

Podsumowanie: Dokument ten służy pomocą ludziom, którzy muszą ręcznie naprawić zepsutą instalację sys-apps/portage.

Marius Mauch
Autor

Łukasz Damentko
Tłumaczenie

Donate to support our development efforts.

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