Optymalna procedura aktualizacji Gentoo Linux?

23

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
cowgod
źródło
6
Dodaję flagę -N do wyłaniania się osobiście
Tom Ritter
2
--tree (-t) jest również przydatne do zrozumienia, co się dzieje
lkraav

Odpowiedzi:

5

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).

Ophidian
źródło
2
Tak, zdecydowanie +1 za regularne śledzenie, a nie w dużych kawałkach. Są sporadyczne zmiany, które po prostu bardzo psują. github.com/lkraav/gentoo-cron-weekly to mój uproszczony zestaw narzędzi do cotygodniowego raportowania.
lkraav
8

Używam prawie tych samych kroków, które robisz, z wyjątkiem:

  • eix-synczamiast emerge --syncponieważ 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 -dpo revdep-rebuildwyczyszczeniu przestarzałych archiwów. Robię to po każdym pojawieniu się, ponieważ obniżanie pakietów nie jest tak powszechne.

  • eix-test-obsoletejako 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-synci eix-test-obsoletesą w app-portage / eix.

eclean-dist jest w app-portage / gentoolkit.

Van Gale
źródło
+1 za eix-sync
Tim
5
  1. emerge --synclub eix-synclub emerge-delta-webrsyncieix-update
  2. emerge -av portage
  3. 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:

  1. rm -rf PKGDIR/* Zastąp PKGDIR ścieżką do pakietu reż!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> Przełącz na nowy gcc
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

Jeśli masz problem z krokiem 10 lub 11, napraw go i spróbuj ponownie

Zaktualizuj świat:

  1. Oczyść plik świata /var/lib/portage/worldz niepotrzebnych pakietów i sprawdź /etc/portagejednostki
  2. fixpackages
  3. emerge -avuDN world
  4. eselect python update
  5. python-updater -- -av
  6. perl-cleaner --all -- -av
  7. emerge -a --depclean
  8. revdep-rebuild -i -- -av

Jeśli masz problemy w krokach 14-18, napraw je i powtórz wszystkie kroki od kroku 13

  1. etc-update lub dispatch-conf
  2. glsa-check -vp affected Po aktualizacji możesz mieć wpływ na pakiety w automatach
  3. emaint --check all
użytkownik261123
źródło
3

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.

Adam D'Amico
źródło
1
Jeśli trzymasz się zdemaskowanych ebuildów, to moim zdaniem Gentoo stało się dość stabilne i nie zawsze tak naprawdę się psuje, wykonując synchronizację i wyłaniając świat. Musisz wiedzieć, co robisz, ale to samo można powiedzieć o apt lub yum. Oboje ugryzły mnie.
John Downey
1
Trzy bardzo niedawne blokady / uszkodzenia, o których mogę myśleć, to libcomerr / e2fsprogs, firefox2 / 3 i xorg 1.3 / 1.5. We wszystkich tych przypadkach, aby aktualizacja hurtowa działała, konieczne było zastosowanie trywialnego masowania i nie było w niej ~ słów kluczowych.
Adam D'Amico,
2
Najnowsze wersje portage - powiedzmy w ciągu ostatnich 6 miesięcy - automatycznie rozwiązują prawie wszystkie bloki i przerwy. W tym libcomerr / e2fsprogs.
Dan Carley,
3
glsa-check -t all
glsa-check -f all

To powinieneś najpierw uruchomić. Niepotrzebne jest uaktualnienie wszystkich pakietów.

Och i wolę aktualizację cfg;)

laurentb
źródło
1

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

Eric Leschinski
źródło
0

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ę.

John Downey
źródło
0

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.

Hajowieland
źródło
Zamiast „--newuse” możesz użyć opcji „--reinstall updated-use”, co spowoduje ponowną instalację pakietów z flagami użycia, które zostały wyraźnie zmienione. Zamiast przestarzałych, dodawanych flag użycia itp. Od czasu do czasu powinieneś jednak uruchamiać komendę „--newuse”.
hayalci
0

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.

Dan Carley
źródło
0

Tak to robię na moim VPS:

krok 0 (z / etc / crontab)

0 0   * * *     root    emerge --sync &> /dev/null

krok 1:

emerge --update --deep --newuse world -av

krok 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
Janczenko
źródło