Procedura ottimale per aggiornare Gentoo Linux?


23

È così che aggiorno Gentoo da molto tempo. È questo il metodo raccomandato ? Qualche gotchas o metodi migliori da usare?

emerge --sync
emerge -uDav --tree world
emerge -av --depclean
revdep-rebuild -v -- --ask
dispatch-conf
glsa-check -t all
glsa-check -f all

6
Aggiungo la bandiera -N su emerge personalmente
Tom Ritter,

2
--tree (-t) è anche utile per capire cosa sta succedendo
lkraav

Risposte:


5

Sembra che tu l'abbia coperto. L'unico altro suggerimento è di prenderlo un po 'più lentamente di un aggiornamento all'ingrosso cieco. Puoi sempre aggiornare i pacchetti o le catene di dipendenze singolarmente con emerge -DNuav <atom>invece di world(usa --oneshot per cose che non vuoi aggiungere al file del mondo, come ad esempio le librerie di sistema).

Si noti che è sempre più facile da fare se ci si tiene regolarmente aggiornati invece di cercare aggiornamenti monolitici in batch ogni due mesi. Inoltre, per evitare troppe sorprese, potresti trovare utile iscriverti a una delle mailing list come gentoo-user(ATTENZIONE: ~ 100 mail al giorno in questo elenco) poiché è probabile che quasi tutti i principali problemi di aggiornamento vengano visualizzati nell'elenco con molte discussioni che spiegano come risolverli.

Immagino che il prossimo importante aggiornamento "problematico" sarà la migrazione ad openrc una volta che sarà stabile (è stato fatto a metà arco dell'anno scorso con solo alcuni problemi, principalmente con le modifiche alla rete).


2
Sì, sicuramente +1 per tenersi aggiornati sul normale piuttosto che in grossi pezzi. Ci sono cambiamenti occasionali che si rompono molto. github.com/lkraav/gentoo-cron-weekly è il mio set di strumenti di reporting settimanale semplicistico.
lkraav,

8

Ho usato quasi gli stessi passaggi che fai, ad eccezione di:

  • eix-syncanziché emerge --syncperché mi piace vedere le modifiche all'albero del portage. Questo è particolarmente utile per notare pacchetti che potrei voler installare che sono nuovi per l'albero.

  • layman -S (di tanto in tanto) prima che emerga il main per sincronizzare eventuali cambiamenti negli overlay.

  • eclean-dist -ddopo la revdep-rebuildpulizia di tarball obsoleti. Lo faccio dopo ogni emergere, perché i downgrade dei pacchetti non sono così comuni.

  • eix-test-obsoletecome ultimo passo per aiutare a mantenere i miei file / etc / portage ordinati e aggiornati. Questo mi fa anche sapere quando ho installato i pacchetti che sono stati completamente rimossi dal portage, quindi devo andare a prendere l'ebuild dal repository. Un esempio recente, devo mascherare tutte le versioni di iproute2> 2.6.22.20070710 a causa del kernel più vecchio in esecuzione sul mio Xen VPS ma è stato recentemente rimosso dal portage.

eix-synce eix-test-obsoletesono in app-portage / eix.

eclean-dist è in app-portage / gentoolkit.


+1 per eix-sync
Tim

5
  1. emerge --syncoppure eix-syncoppure emerge-delta-webrsynceeix-update
  2. emerge -av portage
  3. eclean-dist

Controlla che uno degli header Linux, glibc, binutils, libtool o gcc abbia un aggiornamento magor (es. Aggiornamenti gcc da 4.6 a 4.8). In caso contrario, andare al passaggio 11.

Ricostruzione completa:

  1. rm -rf PKGDIR/* Sostituisci PKGDIR con il tuo percorso per dir pacchetto!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> Passa a nuovo gcc
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

Se riscontri problemi con il passaggio 10 o 11, risolvilo e riprova

Aggiorna mondo:

  1. Pulisci il tuo file mondiale /var/lib/portage/worldda pacchetti non necessari e controlla le /etc/portageentità
  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

In caso di problemi nei passaggi 14-18, risolverlo e ripetere tutti i passaggi dal passaggio 13

  1. etc-update o dispatch-conf
  2. glsa-check -vp affected È possibile avere pacchetti interessati negli slot dopo l'aggiornamento
  3. emaint --check all

3

Se il tuo obiettivo è quello di avere l'ultimo di tutti i pacchetti, allora sì, questo sembra coprire tutte le basi. Sono sorpreso che questo abbia funzionato per te per molto tempo, però, perché immagino che verrai morso spesso da blocchi, interruzioni, ecc. Negli ultimi due anni sono diventato molto più attento all'aggiornamento all'ingrosso, scegliendo invece di farlo frammentariamente dopo aver visualizzato l'albero degli aggiornamenti. Lo sviluppo di Gentoo sembra aver superato il suo massimo splendore. Forse è a causa dell'ascesa di Ubuntu.

Ad ogni modo, un'altra cosa che potresti provare, solo per essere molto esigente sull'intero processo, è ripulire i tuoi file. Ci sono degli script là fuori se cerchi.


1
Se ti attieni agli ebuild smascherati, Gentoo è diventato abbastanza stabile secondo me e non si rompe tutti facendo un mondo di sincronizzazione ed emergere. Devi sapere cosa stai facendo, ma lo stesso si può dire per apt o yum. Sono stato morso da entrambi.
John Downey,

1
Tre blocchi / rotture molto recenti che mi vengono in mente sono libcomerr / e2fsprogs, firefox2 / 3 e xorg 1.3 / 1.5. In tutti quei casi è stato necessario un massaggio non banale per far funzionare l'aggiornamento all'ingrosso e non c'erano ~ parole chiave coinvolte.
Adam D'Amico,

2
Le ultime versioni di portage - diciamo negli ultimi 6 mesi - risolvono automaticamente quasi tutti i blocchi e le interruzioni. Incluso libcomerr / e2fsprogs.
Dan Carley,

3
glsa-check -t all
glsa-check -f all

Questo è ciò che dovresti eseguire per primo. Non è necessario se si aggiornano tutti i pacchetti.

Oh e preferisco cfg-update;)


1

Questo è ciò che faccio:

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.

Se non capisci completamente i commenti, leggi questo perché è l'autorità su come aggiornare i tuoi pacchetti gentoo.

http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?part=2&chap=1


0

Il tuo processo è corretto anche se probabilmente non è necessario eseguire tutti i comandi, di solito eseguo solo una sincronizzazione e un mondo di aggiornamento. Emerge ti dirà di solito se devi eseguire uno script per ricostruire file come durante un importante aggiornamento di Python e ti dirà anche quando unire le modifiche alla configurazione. Poiché Gentoo in realtà non ha un percorso di aggiornamento da versione a versione. Nel momento in cui emergi nel mondo, hai l'ultima versione.


0

Per molto tempo ho sempre usato questa procedura:

emerge -f --update --newuse --deep world && emerge --update --newuse --deep world

Io, per il mio, preferisco aggiornare durante la notte. Ma a volte capita che qualcosa non riesca e quindi devi scaricare di nuovo tutti (o alcuni) programmi.

Forse l'opzione --newuse è inutile, ma spesso sto modificando il mio make.conf, quindi ha senso per me.


Puoi usare "--reinstall changed-use" invece di "--newuse", questo reinstalla i pacchetti con flag use che hai modificato esplicitamente. Invece di obsoleti, aggiunti flag di utilizzo ecc. Dovresti comunque eseguire di tanto in tanto "--newuse".
hayalci,

0

Sembra buono, anche se non sarei così veloce da eseguire depclean.

A meno che tu non abbia requisiti come lo spazio su disco rigido ridotto, puoi tornare indietro e ripulirlo a intervalli meno regolari. Non c'è nulla di male averli in giro per un breve periodo. Se sei stato abbastanza sfortunato da notare alcuni pacchetti rotti dopo l'aggiornamento, allora saresti sicuro che non sono il risultato della rimozione di dipendenze libere.


0

Questo è il modo in cui lo faccio sul mio VPS:

passaggio 0 (da / etc / crontab)

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

passo 1:

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

passo 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.