Un para de problemillas en Gentoo

Un amigo me pidió que le instalase y configurase un sistema Gentoo. Pese a que mi experiencia con Gentoo no es demasiada, leyendo el handbook y la wiki he podido ir superando las dificultades típicas, como los módulos alsa, los paquetes enmascarados y esas cosillas, pero hay dos sobre los que no encuentro información.

El primero es con la librería wxGTK que usan aplicaciones como BitTornado o aMule (y supongo que muchas más) que no compila utilizando el comando emerge. Os pego el error que me suelta:

/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/include/wx/hashmap.h:684: warning: dereferencing type-punn ed pointer will break strict-aliasing rules
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/include/wx/gdicmn.h: In member function 'wxStringToColourH ashMap_wxImplementation_HashTable::Node** wxStringToColourHashMap_wxImplementation_HashTable::GetNodePtr(const wxString&) const':
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/include/wx/gdicmn.h:476: warning: dereferencing type-punne d pointer will break strict-aliasing rules
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp: In static member function 'static size_t wxDisplayBase::GetCount()':
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:58: error: 'XineramaIsActive' was not declared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:60: error: 'XineramaScreenInfo' wa s not declared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:60: error: 'screenarr' was not dec lared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:62: error: 'XineramaQueryScreens' was not declared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp: In static member function 'static int wxDisplayBase::GetFromPoint(const wxPoint&)':
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:76: error: 'XineramaIsActive' was not declared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:79: error: 'XineramaScreenInfo' wa s not declared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:79: error: 'screenarr' was not dec lared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:81: error: 'XineramaQueryScreens' was not declared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp: In constructor 'wxDisplay::wxDisp lay(size_t)':
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:117: error: 'XineramaIsActive' was not declared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:119: error: 'XineramaScreenInfo' w as not declared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:119: error: 'screenarr' was not de clared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:121: error: 'XineramaQueryScreens' was not declared in this scope
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp: In static member function 'static int wxDisplayBase::GetFromPoint(const wxPoint&)':
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:111: warning: control reaches end of non-void function
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp: In static member function 'static size_t wxDisplayBase::GetCount()':
/var/tmp/portage/wxGTK-2.6.2-r1/work/wxWidgets-2.6.2/src/unix/displayx11.cpp:70: warning: control reaches end o f non-void function
make: *** [coredll_displayx11.o] Error 1

!!! ERROR: x11-libs/wxGTK-2.6.2-r1 failed.
Call stack:
ebuild.sh, line 1539: Called dyn_compile
ebuild.sh, line 939: Called src_compile
wxGTK-2.6.2-r1.ebuild, line 52: Called configure_build 'gtk2' 'unicode' '
--with-png
--with-jpeg
--with-tiff
--enable-opengl
--with-opengl
--with-gnomeprint
--with-sdl
--disable-joystick --with-gtk=2'
wxlib.eclass, line 45: Called die

!!! emake failed
!!! If you need support, post the topmost build error, and the call stack if relevant.


En principio pensé que podía ser porque no tenía la USE gtk2 en mi make.conf, así que la añadí, pero el error ahí sigue. Lo mismo sucede con la USE gtk. También probé a desactivar la USE unicode, y seguía en las mismas.

Si no logro hallar la solución imagino que el recurso que me quede sea tirar de una compilación manual y ver qué sucede.

Mi segunda dificultad tiene que ver con los drivers de las tarjetas nVidia. He seguido el tutorial de la wiki, asegurándome de que las salidas de "uname -r" y "ls -l /usr/src/linux" conciden, y al emergearlos suelta lo siguiente:

gentoo martin # emerge nvidia-drivers
Calculating dependencies... done!
>>> Emerging (1 of 1) x11-drivers/nvidia-drivers-1.0.8762-r1 to /
>>> checking ebuild checksums ;-)
>>> checking auxfile checksums ;-)
>>> checking miscfile checksums ;-)
>>> checking NVIDIA-Linux-x86-1.0-8762-pkg1.run ;-)
* Determining the location of the kernel source code
* Found kernel source directory:
* /usr/src/linux
* Could not find a usable .config in the kernel source directory.
* Please ensure that /usr/src/linux points to a configured set of Linux sources.
* If you are using KBUILD_OUTPUT, please set the environment var so that
* it points to the necessary object directory so that it might find .config.

!!! ERROR: x11-drivers/nvidia-drivers-1.0.8762-r1 failed.
Call stack:
ebuild.sh, line 1555: Called dyn_setup
ebuild.sh, line 668: Called pkg_setup
nvidia-drivers-1.0.8762-r1.ebuild, line 81: Called linux-mod_pkg_setup
linux-mod.eclass, line 419: Called linux-info_pkg_setup
linux-info.eclass, line 554: Called die

!!! Unable to calculate Linux Kernel version
!!! If you need support, post the topmost build error, and the call stack if relevant.


Tiene toda la pinta de ser un error de lo más estúpido, pero la verdad es que no sé por dónde tirar ya que según dice a mi kernel le falta un fichero.. Por si sirve de algo, mi kernel es el 2.6.17-gentoo-r7 que viene con la live cd de Gentoo 2006.1

saludos cordiales.
Para lo primero ni idea pero pega tu (su) emerge --info a ver si va a ser cosa de CFLAGS porculeras.

Para lo segundo, el módulo de nVidia para el kernel necesita de un ídem configurado, así que probablemente, si el kernel que utilizáis no lo habéis configurado vosotros, en /usr/src/linux no encuentre los ficheros necesarios.
aquí mi emerge --info

Portage 2.1-r2 (default-linux/x86/2006.1/desktop, gcc-4.1.1, glibc-2.4-r3, 2.6.17-gentoo-r7 i686)
=================================================================
System uname: 2.6.17-gentoo-r7 i686 AMD Duron(tm) processor
Gentoo Base System version 1.12.1
app-admin/eselect-compiler: [Not Present]
dev-lang/python: 2.4.3-r1
dev-python/pycrypto: 2.0.1-r5
dev-util/ccache: [Not Present]
dev-util/confcache: [Not Present]
sys-apps/sandbox: 1.2.17
sys-devel/autoconf: 2.13, 2.59-r7
sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2
sys-devel/binutils: 2.16.1-r3
sys-devel/gcc-config: 1.3.13-r3
sys-devel/libtool: 1.5.22
virtual/os-headers: 2.6.11-r2
ACCEPT_KEYWORDS="x86"
AUTOCLEAN="yes"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config"CONFIG_PROTECT_MASK="/etc/env.d /etc/gconf /etc/terminfo"
CXXFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"
DISTDIR="/usr/portage/distfiles"
FEATURES="autoconfig distlocks metadata-transfer sandbox sfperms strict"
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"
LINGUAS="es"
MAKEOPTS=""
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude='/distfiles' --exclude='/local' --exclude='/packages'"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="3dnow 3dnowext X alsa avi bitmap-fonts cairo cdr cli crypt cups dbus dga dlloader dri dvd dvdr eds elibc_glibc emboss esd fam firefox fortran gdbm gif gnome gpm gstreamer gtk gtk2 hal input_devices_evdev input_devices_keyboard input_devices_mouse ipv6 isdnlog jpeg kernel_linux ldap libg++ mad mikmod mmx mmxext mp3 mpeg ncurses nls nptl nptlonly ogg opengl oss pam pcre pdflib perl png ppds pppd python quicktime readline reflection sdl session spl sse ssl tcpd truetype truetype-fonts type1-fonts udev unicode userland_GNU vorbis win32codecs x86 xml xorg xv zlib linguas_es video_cards_apm video_cards_ark video_cards_ati video_cards_chips video_cards_cirrus video_cards_cyrix video_cards_dummy video_cards_fbdev video_cards_glint video_cards_i128 video_cards_i740 video_cards_i810 video_cards_imstt video_cards_mga video_cards_neomagic video_cards_nsc video_cards_nv video_cards_rendition video_cards_s3 video_cards_s3virge video_cards_savage video_cards_siliconmotion video_cards_sis video_cards_sisusb video_cards_tdfx video_cards_tga video_cards_trident video_cards_tseng video_cards_v4l video_cards_vesa video_cards_vga video_cards_via video_cards_vmware video_cards_voodoo"
Unset: CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, LDFLAGS, PORTAGE_RSYNC_EXTRA_OPTS


sobre mi otro problema...pues probaré a compilar el kernel yo mismo, lo que pasa es que no lo hice antes porque una vez que probé hace ya mucho recuerdo que me cargué la partición entera...xD
En MAKEOPTS deberíais poner -j2 (1+ el nº de núcleos del procesador), por lo demás lo veo bien en principio, ni idea.

P.D. Quizás genkernel servirá para tu segundo problema.
Bueno, posteo para decir que he logrado solucionar uno de los problemas, el de los drivers nvidia, copiando el config.gz de la carpeta /prox al directorio del kernel [sonrisa]
Para el primer problema lo más rápido suele ser acudir a los foros de gentoo. Generalmente encuentras ahí la solución incluso antes de que se reporten los bugs (si es que algunos son perezosos para reportar). Prueba esto:

http://forums.gentoo.org/viewtopic-p-3315074.html#3315074
Después de pegarme MUCHAS tortas con el S.O por fin he conseguido tener aceleración gráfica, he aprendido bastante y mi satisfacción en este momento está por las nubes :-p
Efectivamente, como te han comentado... los problemas raros con algún paquete... los foros suelen ser la mejor salida.

Sobre lo otro el error te lo decía claro:
* /usr/src/linux
* Could not find a usable .config in the kernel source directory.
* Please ensure that /usr/src/linux points to a configured set of Linux sources.
* If you are using KBUILD_OUTPUT, please set the environment var so that
* it points to the necessary object directory so that it might find .config.


Tienes que asegurarte que el link /usr/src/linux apunta a la versión del kernel para la que vas a compilar los drivers. Si ese kernel ya está compilado, tendrá el .config que te pide.

¡Un saludo!
7 respuestas