W ten sposób aktualizuję Gentoo od dłuższego czasu. Czy to zalecana metoda? Jakieś gotchas lub lepsze metody?
emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all
W ten sposób aktualizuję Gentoo od dłuższego czasu. Czy to zalecana metoda? Jakieś gotchas lub lepsze metody?
emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all
Odpowiedzi:
Wygląda na to, że go masz. Jedyną inną wskazówką jest być może wolniej niż ślepa aktualizacja hurtowa. Zawsze można aktualizować pakiety lub łańcuchów zależnościami indywidualnie emerge -DNuav <atom>
zamiast world
(użyj --oneshot za rzeczy, które nie chcą, aby dodać do pliku światowej, jak bibliotekami systemowymi na przykład).
Pamiętaj, że zawsze jest to łatwiejsze, jeśli regularnie aktualizujesz informacje, zamiast wybierać monolityczne aktualizacje partii co kilka miesięcy. Ponadto, aby uniknąć zbyt wielu niespodzianek, pomocne może być zasubskrybowanie jednej z list mailingowych, takich jak gentoo-user
(OSTRZEŻENIE: ~ 100 maili dziennie na tej liście), ponieważ prawie wszystkie poważne problemy z aktualizacją mogą pojawić się na liście z mnóstwo dyskusji wyjaśniających, jak je rozwiązać.
Domyślam się, że następną poważną aktualizacją „problemu” będzie migracja do openrc, gdy tylko się ustabilizuje (zostało to zrobione w połowie ubiegłego roku z kilkoma problemami, głównie ze zmianami sieci).
Używam prawie tych samych kroków, które robisz, z wyjątkiem:
eix-sync
zamiast emerge --sync
ponieważ lubię widzieć zmiany w drzewie portage. Jest to szczególnie przydatne do zauważania pakietów, które mogę chcieć zainstalować, które są nowe w drzewie.
layman -S
(czasami) przed pojawieniem się głównego, aby zsynchronizować wszelkie zmiany nakładek.
eclean-dist -d
po revdep-rebuild
wyczyszczeniu przestarzałych archiwów. Robię to po każdym pojawieniu się, ponieważ obniżanie pakietów nie jest tak powszechne.
eix-test-obsolete
jako ostatni krok, aby pomóc utrzymać porządek i aktualność moich plików / etc / portage. Daje mi to również informację, kiedy zainstalowałem pakiety, które zostały całkowicie usunięte z Portage, więc muszę pobrać ebuild z repozytorium. Ostatni przykład, muszę zamaskować wszystkie wersje iproute2> 2.6.22.20070710 z powodu starszego jądra działającego na moim Xen VPS, ale został on niedawno usunięty z Portage.
eix-sync
i eix-test-obsolete
są w app-portage / eix.
eclean-dist
jest w app-portage / gentoolkit.
emerge --sync
lub eix-sync
lub emerge-delta-webrsync
ieix-update
emerge -av portage
eclean-dist
Sprawdź, czy jeden z nagłówków linuxa, glibc, binutils, libtool lub gcc ma aktualizację magor (np. Aktualizacje gcc z 4.6 do 4.8). Jeśli nie, przejdź do kroku 11.
Pełna przebudowa:
rm -rf PKGDIR/*
Zastąp PKGDIR ścieżką do pakietu reż!emerge -av linux-headers glibc binutils gcc-config libtool gcc
gcc-config <number of new gcc>
Przełącz na nowy gccsource /etc/profile
emerge -avb glibc binutils gcc libtool
emerge -avbke system
emerge -avbke world
Jeśli masz problem z krokiem 10 lub 11, napraw go i spróbuj ponownie
Zaktualizuj świat:
/var/lib/portage/world
z niepotrzebnych pakietów i sprawdź /etc/portage
jednostkifixpackages
emerge -avuDN world
eselect python update
python-updater -- -av
perl-cleaner --all -- -av
emerge -a --depclean
revdep-rebuild -i -- -av
Jeśli masz problemy w krokach 14-18, napraw je i powtórz wszystkie kroki od kroku 13
etc-update
lub dispatch-conf
glsa-check -vp affected
Po aktualizacji możesz mieć wpływ na pakiety w automatachemaint --check all
Jeśli Twoim celem jest posiadanie najnowszej wersji wszystkich pakietów, to tak, wydaje się, że obejmuje wszystkie podstawy. Dziwi mnie, że działało to dla Ciebie od dłuższego czasu, ponieważ wyobrażam sobie, że często gryzą Cię bloki, zepsute deps itp. W ciągu ostatnich kilku lat znacznie bardziej ostrożnie podchodziłem do aktualizacji hurtowych, wybierając zamiast tego zrobić to fragmentarycznie po przejrzeniu drzewa aktualizacji. Wygląda na to, że rozwój Gentoo już minął. Może to z powodu wzrostu Ubuntu.
W każdym razie, jedną dodatkową rzeczą, którą możesz spróbować, aby być naprawdę wybrednym w całym procesie, jest czyszczenie plików dystansowych. Tam są skrypty, jeśli szukasz.
Tym się właśnie zajmuję:
emerge --sync //Synchronize the package manager with the latest
//version of each package.
emerge -aDvNu system //updates the system, but only important if you want the
//latest stable version of the actual compiler and libraries
//with the core system.
emerge -uDNav world //world means everything we've asked to be emerged before
//this does not include things that came pre installed.
//N means if you change your use directives in
//your make.conf file to pull in the new packages.
emerge -av depclean //removes libraries or programs that don't have any other
//dependencies because of an update.
revdep-rebuild //means if something is broken by an update, it
//recompiles it. Fixes dynamic and static linking problems.
Jeśli nie rozumiesz w pełni komentarzy, przeczytaj to, ponieważ to on jest autorytetem w zakresie aktualizacji pakietów gentoo.
http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1
Twój proces jest prawidłowy, chociaż uruchomienie każdego polecenia prawdopodobnie nie jest konieczne, zwykle synchronizuję i aktualizuję świat. Emerge poinformuje Cię zwykle, czy musisz uruchomić skrypt, aby odbudować plik, na przykład podczas ważnej aktualizacji Pythona, a także powie, kiedy scalić zmiany konfiguracji. Ponieważ Gentoo tak naprawdę nie ma ścieżki aktualizacji z wersji do wersji. W momencie pojawienia się świata masz najnowszą wersję.
Od dłuższego czasu zawsze korzystałem z tej procedury:
emerge -f --update --newuse --deep world && emerge --update --newuse --deep world
Ja, dla mnie, wolę aktualizować w nocy. Ale czasami zdarza się, że coś się nie udaje, więc musisz ponownie pobrać wszystkie (lub niektóre) programy.
Być może przełącznik --newuse nie jest konieczny, ale często edytuję plik make.conf, więc ma to dla mnie sens.
Wygląda dobrze, chociaż nie byłbym tak szybki, żeby uciec od brudu.
Jeśli nie masz wymagań takich jak mało miejsca na dysku twardym, możesz wrócić i oczyścić w mniej regularnych odstępach czasu. Nie ma nic złego w utrzymywaniu ich przez krótki czas. Jeśli miałeś pecha, aby zauważyć niektóre uszkodzone pakiety po aktualizacji, byłbyś pewien, że nie są one wynikiem usunięcia luźnych zależności.