Procedimiento óptimo para actualizar Gentoo Linux?


23

Así es como he estado actualizando Gentoo durante mucho tiempo. ¿Es este el método recomendado ? ¿Alguna trampa o mejores métodos para usar?

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

66
Agrego la bandera -N en emerge personalmente
Tom Ritter

2
--tree (-t) también es útil para comprender lo que está sucediendo
lkraav

Respuestas:


5

Parece que lo tienes cubierto. El único otro consejo es quizás tomarlo un poco más lento que una actualización mayorista ciega. Siempre puede actualizar los paquetes o las cadenas de dependencia individualmente en emerge -DNuav <atom>lugar de world(use --oneshot para las cosas que no desea agregar al archivo mundial, como las bibliotecas del sistema, por ejemplo).

Tenga en cuenta que siempre es más fácil hacerlo si se mantiene actualizado regularmente en lugar de buscar actualizaciones de lotes monolíticos cada dos meses. Además, para evitar demasiadas sorpresas, puede que le resulte útil suscribirse a una de las listas de correo como gentoo-user(ADVERTENCIA: ~ 100 correos al día en esta lista), ya que es probable que aparezcan en la lista prácticamente cualquier problema de actualización importante. mucha discusión explicando cómo resolverlos.

Supongo que la próxima actualización importante del "problema" será la migración a openrc una vez que se estabilice (se realizó a mediados del año pasado con solo unos pocos problemas, principalmente con cambios en la red).


2
Sí, definitivamente +1 en mantenerse al día en forma regular en lugar de en grandes bloques. Hay cambios ocasionales que simplemente se rompen mucho. github.com/lkraav/gentoo-cron-weekly es mi conjunto de herramientas de informes semanales simplista.
lkraav

8

He estado usando casi los mismos pasos que usted, excepto:

  • eix-syncen lugar de emerge --syncporque me gusta ver los cambios en el árbol de portage. Esto es especialmente bueno para notar paquetes que podría querer instalar que son nuevos en el árbol.

  • layman -S (ocasionalmente) antes de que emerja el principal para sincronizar cualquier cambio en las superposiciones.

  • eclean-dist -ddespués revdep-rebuildde limpiar tarballs obsoletos. Hago esto después de cada emergencia, porque las degradaciones de paquetes no son tan comunes.

  • eix-test-obsoletecomo el último paso para ayudar a mantener mis archivos / etc / portage ordenados y actualizados. Esto también me permite saber cuándo he instalado paquetes que se han eliminado por completo de portage, por lo que necesito obtener el ebuild del repositorio. Un ejemplo reciente, tengo que enmascarar todas las versiones de iproute2> 2.6.22.20070710 debido a que el kernel anterior se ejecutaba en mi Xen VPS, pero fue eliminado recientemente de portage.

eix-syncy eix-test-obsoleteestán en app-portage / eix.

eclean-dist está en app-portage / gentoolkit.


+1 para eix-sync
Tim

5
  1. emerge --synco eix-synco emerge-delta-webrsyncyeix-update
  2. emerge -av portage
  3. eclean-dist

Compruebe que uno de los encabezados de Linux, glibc, binutils, libtool o gcc tiene una actualización magor (por ejemplo, actualizaciones de gcc de 4.6 a 4.8). Si no es así, vaya al paso 11.

Reconstrucción completa:

  1. rm -rf PKGDIR/* ¡Reemplace PKGDIR con su ruta al paquete dir!
  2. emerge -av linux-headers glibc binutils gcc-config libtool gcc
  3. gcc-config <number of new gcc> Cambiar a nuevo gcc
  4. source /etc/profile
  5. emerge -avb glibc binutils gcc libtool
  6. emerge -avbke system
  7. emerge -avbke world

Si tiene algún problema en los pasos 10 u 11, corríjalo e intente nuevamente

Actualización mundial:

  1. Limpie su archivo mundial /var/lib/portage/worldde paquetes innecesarios y verifique las /etc/portageentidades
  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

Si tiene algún problema en los pasos 14-18, corríjalo y repita todos los pasos del paso 13

  1. etc-update o dispatch-conf
  2. glsa-check -vp affected Puede tener paquetes afectados en las ranuras después de la actualización
  3. emaint --check all

3

Si su objetivo es tener el último absoluto de todos los paquetes, entonces sí, eso parece cubrir todas las bases. Sin embargo, me sorprende que esto haya funcionado para usted durante mucho tiempo, porque me imagino que a menudo lo muerden bloques, pisos rotos, etc. En los últimos dos años he tenido mucho más cuidado con las actualizaciones al por mayor, eligiendo en cambio hacerlo poco a poco después de ver el árbol de actualización. El desarrollo de Gentoo parece haber pasado su apogeo. Tal vez sea por el auge de Ubuntu.

De todos modos, una cosa adicional que puedes probar, solo para ser realmente exigente con todo el proceso, es limpiar tus destiladores. Hay secuencias de comandos por ahí si busca.


1
Si te apegas a los ebuilds sin máscara, Gentoo se ha vuelto bastante estable en mi opinión y no todo se rompe al hacer una sincronización y emerger del mundo. Necesita saber lo que está haciendo, pero se puede decir lo mismo para apt o yum. He sido mordido por los dos.
John Downey

1
Se me ocurren tres bloqueos / roturas muy recientes: libcomerr / e2fsprogs, firefox2 / 3 y xorg 1.3 / 1.5. En todos esos casos, se requirió un masaje no trivial para que la actualización completa funcionara, y no hubo palabras clave involucradas.
Adam D'Amico

2
Las últimas versiones de portage, digamos en los últimos 6 meses, resuelven automáticamente casi todos los bloqueos y pausas. Incluyendo libcomerr / e2fsprogs.
Dan Carley

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

Eso es lo que debes correr primero. No es necesario si actualiza todos los paquetes.

Ah, y prefiero cfg-update;)


1

Esto es lo que hago:

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.

Si no comprende completamente los comentarios, lea esto porque es la autoridad sobre cómo actualizar sus paquetes gentoo.

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


0

Su proceso es correcto, aunque ejecutar todos los comandos probablemente no sea necesario, generalmente solo hago una sincronización y un mundo de actualización. Emerge le dirá generalmente si necesita ejecutar un script para reconstruir el archivo, como durante una actualización importante de Python, y también le dirá cuándo combinar los cambios de configuración. Dado que Gentoo en realidad no tiene una ruta de actualización de versión a versión. En el momento en que emerges, tienes la última versión.


0

Durante mucho tiempo, siempre utilicé este procedimiento:

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

Yo, para el mío, prefiero actualizar durante la noche. Pero a veces sucede que algo falla y, por lo tanto, debe descargar todos (o algunos) programas nuevamente.

Quizás el modificador --newuse es innecesario, pero a menudo edito mi make.conf, por lo que tiene sentido para mí.


Puede usar "--reinstall changed-use" en lugar de "--newuse", esto reinstala paquetes con marcas de uso que ha cambiado explícitamente. Sin embargo, en lugar de obsoletos, se agregaron marcas de uso, etc. De todos modos, debe ejecutar con "--newuse" de vez en cuando.
hayalci el

0

Se ve bien, aunque no sería tan rápido para ejecutar depclean.

A menos que tenga un requisito como un espacio bajo en el disco duro, puede volver y limpiar en intervalos menos regulares. No hay daño tenerlos cerca por un período corto. Si tuvo la mala suerte de notar algunos paquetes rotos después de la actualización, entonces estaría seguro de que no son el resultado de eliminar las dependencias sueltas.


0

Así lo hago en mi VPS:

paso 0 (desde / etc / crontab)

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

paso 1:

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

paso 2:

emerge --depclean && revdep-rebuild && eclean-pkg && rm /usr/portage/distfiles/*
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.