# Problemas con Actualización "World": Conflicto Slo[RESUELTO]

## kinematik

Hola a todos, aunque me encanta Gentoo, conozca el comando emerge y haya resuelto bastantes problemas de Portage, siempre me ha sido relativamente confuso el proceso de actualización de paquetes con emerge. Creo que toda la documentación existente no es muy intuitiva y que por desgracia el único camino para aprender a fondo, es enfrentarte con los errores de Portage.

Despues de varios meses sin actualizar, me decidí a poner el día mi maquina, principalmente por el cambio de versión de KDE 3.510 a 4.3.2.

Actualización del Kernel 2.6.29 a 2.6.31: Con problemas menores casi todos resueltos

actualización de System: con algun bloqueo de paquetes facilmente resueltos

Actualización de World: Atascado

 *Quote:*   

> 
> 
> Gentoo grub # emerge -pvuD world
> 
> These are the packages that would be merged, in order:
> ...

 

Os rogaría me orienteis con la idea de, no sólo resolver los problemas, sino conocer el origen de los mismos.

Gracias!!Last edited by kinematik on Wed Dec 02, 2009 10:23 pm; edited 1 time in total

----------

## Coghan

El error lo tienes dividido en dos partes:

Bloqueo por slot inválido *Quote:*   

> sys-apps/dbus:0 
> 
> ('ebuild', '/', 'sys-apps/dbus-1.2.3-r1', 'merge') pulled in by 
> 
> sys-apps/dbus[X] required by ('ebuild', '/', 'kde-base/kdelibs-4.3.1-r2', 'merge') 
> ...

 Fíjate en la primera y en la última líneas, te dicen que tienes la aplicación instalada en slot:0 y que intenta instalarla fuera de slot y que además pertenece a world. Esto es raro y seguro que es por un error humano. Comprueba que sys-apps/dbus:0 no esté dentro de /var/lib/portage/world, elimínalo si estuviera, no debe estar ahí si se instala debería ser como dependencia. Cuidado al reinstalar paquetes para corregir alguna incidencia si no sabes si debe ir en world o no es mejor siempre re-emerger con la opción -1.

Aviso de dependencias *Quote:*   

> - dev-python/PyQt4-4.5.4-r4 (Change USE: +sql +webkit)

 

Esto no es más que un simple aviso para que le cambies las USE Flags al paquete dev-python/pyQt4 como te indica: +sql y +webkit. Agrégalo a tu /etc/portage/package.use

----------

## kinematik

El contenido de mi fichero /var/lib/portage/world es el siguiente:

 *Quote:*   

> app-admin/syslog-ng
> 
> dev-util/ccache
> 
> kde-base/kate
> ...

 

Me parece que tengo bastante basura y paquetes inapropiados. Quien gestiona el fichero world?, el propio comando emerge?, en ese caso como distingue entre un paquete que debe ir en world y cual no?, existe un fichero similar que reuna los paquetes de system?

En seguida me pongo manos a la obra y reporto si se arregla el bloqueo

Saludos

 *Coghan wrote:*   

> El error lo tienes dividido en dos partes:
> 
> Bloqueo por slot inválido *Quote:*   sys-apps/dbus:0 
> 
> ('ebuild', '/', 'sys-apps/dbus-1.2.3-r1', 'merge') pulled in by 
> ...

 

----------

## Coghan

No tienes mucho en tu world, aunque yo quitaría todo esto, unos porque ya no existen en portage y otros porque deberían instalarse activando alguna USE.

 *Quote:*   

> kde-base/kde-i18n
> 
> kde-base/kdebase-startkde
> 
> kde-base/klaptopdaemon
> ...

 

 *kinematik wrote:*   

> Quien gestiona el fichero world?, el propio comando emerge?, en ese caso como distingue entre un paquete que debe ir en world y cual no?, existe un fichero similar que reuna los paquetes de system?

 

Por supuesto, emerge gestiona todo, todo dependerá de como lo uses, normalmente todo lo que esté en tu fichero world no se desinstalará nunca al realizar un emerge --depclean a menos que tu se lo digas explícitamente. Cuando instalas con emerge sin los parámetros -D -N o -1 siempre se agregará al world el paquete que indicas, si este necesita dependencias y aparecen en la lista a instalar (opción -a o -p), estás no se añadirán a world, normalmente las bibliotecas *-libs*. Un fichero world pequeño hará que emerge realice la búsqueda de paquetes a actualizar más rápidamente y tendrás un sistema limpio de paquetes innecesarios.

En cuanto a system, este es mejor no tocarlo, lo gestiona internamente portage y siempre que actualizas world este también lo hace.

Un buen sistema cotidiano de actualizar es el siguiente:

```
# Sincronizar portage emerge-sync o eix-sync

eix-sync

# Actualizar world, revisar USE Flags nuevas o que hayan cambiado.

# Eventualmente añadir --with-bdeps

emerge -uavDN world

# Revisar logs de la instalación y seguir las recomendaciones. **Importante**

elogv

# Actualizar variables de entorno y ficheros de configuración.

env-update && source /etc/profile && dispatch-conf

# Limpiar dependencias no usadas

emerge --depclean

# Corregir enlaces rotos a librerías, eventualmente con 'lafilefixer --justfixit'

revdep-rebuild

# Limpiar fuentes obsoletas en /usr/portage/distfiles

eclean-dist -d
```

Suelo realizar este proceso con la mayor frecuencia que me es posible, casi a diario, de esta manera tengo menos trabajo a la hora de actualizar debido que se actualizan menos paquetes. Hay quien prefiere cada 3 o 4 días o una semana. Me parece un error, en mi opinión, dejar sin actualizar durante muchos meses (Salvo por algún caso especial), cuando toque hacerlo solo tendrás dolores de cabeza y una lista de modificaciones inmensa, en estos casos se suelen replantear reinstalar.

----------

## i92guboj

 *kinematik wrote:*   

> 
> 
> Me parece que tengo bastante basura y paquetes inapropiados. Quien gestiona el fichero world?, el propio comando emerge?, en ese caso como distingue entre un paquete que debe ir en world y cual no?

 

Van en world los paquetes referenciados en línea de comandos de forma directa, es decir, si haces

```
emerge foo
```

El paquete foo es añadido a world, a no ser que uses el parámetro --oneshot (o -1). El resto de paquetes que se instalen como dependencias no van a world. Para manternerlo lo más limpio posible, se aconseja usar -1|--oneshot cada vez que tengas que re-emerger "a mano" un paquete que ya está instalado por alguna razón.

Cómo deja entrever Coghan arriba, una buena higiene de world es necesaria para un correcto funcionamiento de algunas partes de portage, como --depclean.

En cuanto al fichero, emerge lo maneja por si solo. En principio no está pensado para que nadie lo edite a mano, pero siempre es posible hacerlo, siempre con cuidado, previo backup, y preferiblemente en pasos pequeños. Por ejemplo, si lo que quieres es limpiar el sistema un poco, elimina los paquetes de uno en uno de world, y luego ejecuta "emerge --ask --depclean" en cada paso, y así poco a poco.

----------

## kinematik

Gracias por vuestras respuestas, me ha quedado bastante mas claro el concepto de "world". Basicamente hay que intentar tener el sistema bien configurado con las USE correctas y que sea Portage quien maneje las dependencias, evitando emerger directamente paquetes que no sean principales. Tambien hay que ejecutar el emerge --depclean con objeto de mantener todo limpio.

El primer error ha sido corregido con el comando

 *Quote:*   

> # emerge --oneshot dbus

 

Observo que sigo conservando la linea sys-apps/dbus en mi fichero world, pero desde luego no obtengo el error con el conflicto de slots.

El segundo conflicto me sigue apareciendo y bloqueando la actualización del sistema:

 *Quote:*   

> unknown0013ce757d98 portage # cat package.use
> 
> dev-python/pyQt4 sql webkit

 

 *Quote:*   

> 
> 
> unknown0013ce757d98 portage # emerge --update --newuse --deep -pv world
> 
> These are the packages that would be merged, in order:
> ...

 

alguna orientación?

----------

## i92guboj

 *kinematik wrote:*   

> Gracias por vuestras respuestas, me ha quedado bastante mas claro el concepto de "world". Basicamente hay que intentar tener el sistema bien configurado con las USE correctas y que sea Portage quien maneje las dependencias, evitando emerger directamente paquetes que no sean principales. Tambien hay que ejecutar el emerge --depclean con objeto de mantener todo limpio.
> 
> El primer error ha sido corregido con el comando
> 
>  *Quote:*   # emerge --oneshot dbus 
> ...

 

--oneshot solo sirve como medida preventiva, no como cura. No elimina nada de world, tan solo evita que se añada. 

 *Quote:*   

> 
> 
> El segundo conflicto me sigue apareciendo y bloqueando la actualización del sistema:
> 
>  *Quote:*   unknown0013ce757d98 portage # cat package.use
> ...

 

 *Quote:*   

> - dev-python/PyQt4-4.5.4-r4 (Change USE: +sql +webkit)

 

----------

## Coghan

 *kinematik wrote:*   

> Observo que sigo conservando la linea sys-apps/dbus en mi fichero world, pero desde luego no obtengo el error con el conflicto de slots.

 Puedes eliminarlo a mano sin problemas de /var/lib/portage/world

 *Quote:*   

> El segundo conflicto me sigue apareciendo y bloqueando la actualización del sistema:
> 
>  *Quote:*   unknown0013ce757d98 portage # cat package.use
> 
> dev-python/pyQt4 sql webkit 

 

Parece que no acepta las USEs que pide aunque se las hayas puesto. Se me ocurre que desinstales pyQt4 y lo vuelvas a instalar con la opción --oneshot como ya has aprendido a hacer. Una vez lo tengas vuelve a actualizar world de nuevo.

----------

## Txema

Normal que no acepte las USE, no ha escrito bien el nombre...

 *Quote:*   

> unknown0013ce757d98 portage # cat package.use
> 
> dev-python/pyQt4 sql webkit

 

Eso es una mayúscula.

Saludos.

----------

## Coghan

¡Vaya!, pues es cierto, tampoco me di cuenta de ese detalle.

----------

## kinematik

 *Txema wrote:*   

> Normal que no acepte las USE, no ha escrito bien el nombre...
> 
>  *Quote:*   unknown0013ce757d98 portage # cat package.use
> 
> dev-python/pyQt4 sql webkit 
> ...

 

Que significa que el paquete PYyQT4 no acepte las USE?, significa que la combinación de USE Flags que necesita el paquete para ser instalado correctamente están siendo excluidas de alguna forma?

Preguntado de otro modo. En mi problema:

 *Quote:*   

> emerge: there are no ebuilds built with USE flags to satisfy ">=dev-python/PyQt4-4.5[dbus,sql,svg,webkit,X]". 

 

El Paquete/eBuild PyQT4-4.5, necesita las USE "dbus", "sql", "svg", "webkit" y "X", sin embargo, mi sistema actualmente de alguna forma está excluyendo esas USE flags ya sea directamente (ejemplo: USE="-sql") como indirectamente (alguna incompatibilidad con otro paquete?).

Saludos

----------

## i92guboj

Como ya te han dicho arriba, el nombre del paquete en tu package.use está mal, cuidado con las mayúsculas en linux.

----------

## kinematik

Bien, tras corregir el nombre del paquete dev-python/PyQt4, aparece un nuevo error:

 *Quote:*   

> unknown0013ce757d98 portage # emerge -pvuD world
> 
> These are the packages that would be merged, in order:
> 
> Calculating dependencies... done!
> ...

 

Tras anhadir el correspondiente paquete/USE en el fichero package.use:

 *Quote:*   

> unknown0013ce757d98 portage # cat package.use
> 
> dev-python/PyQt4 sql webkit
> 
> >=x11-libs/qt-sql-4.5.0:4 mysql
> ...

 

El problema resuelto. Ahora soy capaz de actualizar mi sistema. Tengo 259 nuevos paquetes y actualizaciones con el paso de KDE 3.5.10 a 4.3.2.

Me queda la duda sobre el "significado exacto" de que un paquete/ebuild no acepte las USE?, significa que la combinación de USE Flags que necesita el paquete para ser instalado correctamente están siendo excluidas de alguna forma?

----------

## Coghan

 *kinematik wrote:*   

> Me queda la duda sobre el "significado exacto" de que un paquete/ebuild no acepte las USE?, significa que la combinación de USE Flags que necesita el paquete para ser instalado correctamente están siendo excluidas de alguna forma?

 

Perdona, solo fue una manera de expresar lo extraño del asunto, sin haberme fijado en esa dichosa mayúscula me extrañó que no compilara el paquete con las USE que le indicabas, empezaba a pensar que había algún bug. Ya se que no es un comentario nada técnico, por eso me disculpo.

Por otro lado el último paquete que añadiste a tu package.use lo has puesto con la versión exacta, ten en cuenta que cuando cambien de versión este paquete no se compilará con esa bandera hasta que no lo vuelvas a agregar de nuevo al package.use. Lo mejor será que lo indiques sin versión, de manera similar al paquete anterior, así cualquier actualización se seguirá manteniendo la configuración de USEs que tengas.

----------

## kinematik

 *Coghan wrote:*   

>  *kinematik wrote:*   Me queda la duda sobre el "significado exacto" de que un paquete/ebuild no acepte las USE?, significa que la combinación de USE Flags que necesita el paquete para ser instalado correctamente están siendo excluidas de alguna forma? 
> 
> Perdona, solo fue una manera de expresar lo extraño del asunto, sin haberme fijado en esa dichosa mayúscula me extrañó que no compilara el paquete con las USE que le indicabas, empezaba a pensar que había algún bug. Ya se que no es un comentario nada técnico, por eso me disculpo.
> 
> Por otro lado el último paquete que añadiste a tu package.use lo has puesto con la versión exacta, ten en cuenta que cuando cambien de versión este paquete no se compilará con esa bandera hasta que no lo vuelvas a agregar de nuevo al package.use. Lo mejor será que lo indiques sin versión, de manera similar al paquete anterior, así cualquier actualización se seguirá manteniendo la configuración de USEs que tengas.

 

Muchísimas gracias Coghan, y en general a todos, porque he aprendido bastante con vuestros comentarios. Espero que sirvan de ayuda a mas Noobs.

----------

