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.
Materiał udostępniany na podstawie licencji Creative Commons -
Attribution / Share Alike.
|