# portage, emerge genera shebang/hashbang incorrectos

## jeer

Hola a todos,

Hace mucho no actualizaba mi gentoo y hace 30 dias me dio por actualizarlo, primero pase de python 2.6 a 2.7 y luego actualice el emerge.

ahora resulta que el emerge no compila el gobject-introspection, si descomprimo los fuentes y los compilo a mano todo funciona bien, pero si lo intento por emerge falla.

resulta tambien que compila otros ebuilds pero despues no funcionan...

analizando mucho el problema encontre que emerge esta creando hashbang asi "#!python-2.7", si intento lanzar ese ejecutable obtengo errores de interprete desconocido.

he buscado mucho y encontre que los hashbang soportados son los clasicos:

/usr/bin/python

/usr/bin/env python

no se porque emerge esta generando esos hashbangs incorrectos, si son correctos que me falta habilitar para que funcionen y pueda actualizar el resto de paquetes?

ya he probado recompilando todo lo imaginable y en todos los ordenes posibles. Lo unico que me falta por hacer es un downgrade a portage.

si alguien tiene idea de q hacer le agradeceria me ayudara.

la version de portage que estoy utilizando es 2.1.10.11 en un amd64 no-multilib con gcc 4.5.3 glibc 2.12.2-r0 kernel 2.6.38-r6.

gracias.

----------

## gringo

 *Quote:*   

> si son correctos que me falta habilitar para que funcionen y pueda actualizar el resto de paquetes

 

no sé que errores obtienes exactamente pero despues de actualizar python debes con un eselect python esteblecer que version(es) de python quieres y despues ejecutar python-updater. Con esto creo que el problema estaría solucionado.

saluetes

----------

## jeer

el error es este:

  CCLD   gthash-test

  CC     glib_print-glib-print.o

  CCLD   glib-print

  GEN    g-ir-scanner

  GEN    g-ir-annotation-tool

  GISCAN GLib-2.0.gir

env: ./g-ir-scanner: No existe el fichero o el directorio

make[2]: *** [GLib-2.0.gir] Error 127

make[2]: se sale del directorio `/var/tmp/portage/dev-libs/gobject-introspection-0.10.8/work/gobject-introspection-0.10.8'

make[1]: *** [all-recursive] Error 1

make[1]: se sale del directorio `/var/tmp/portage/dev-libs/gobject-introspection-0.10.8/work/gobject-introspection-0.10.8'

ya tengo el sistema andando...

el python 2.7 ya fue seleccionado como predeterminado y he hecho el python-updater, pero lo primero q intenta compilar es el gobject-introspection, asi q ni modo.

lo que hice fue compilarlo e instalarlo a mano, quitar el use introspection de make.conf, y luego colocarlo en portage.provided

estuve con la maquina parada casi un mes y usandolo con un live cd de ubuntu.

todavia tengo el problema de no poder compilar el gobject-introspection, inclusive compile todas las dependencias del paquete de nuevo.

otros paquetes como gnome-doc-utils compilan pero luego cuando se ejecuta xml2po falla, revisando el ejecutable encontre que llama a otro que es xml2po-2.7 y este cuando lo ejecuto falla.

revisando ese ultimo archivo encuentro q el shebang es "#!python-2.7", si lo cambio manualmente por /usr/bin/python-2.7 entonces funciona bien.

busque con  grep -r "\!python" / y encontre varios que pues repare con otros comandos.

en los ebuilds encontre este comando "python_convert_shebangs", ejemplo

python_convert_shebangs $(python_get_version) "${ED}"usr/bin/xml2po

que al ser eliminada y al volver a generar las verificaciones de los ebuilds e instalarlos todo funciona bien.

entonces a la conclusion que llegue es q mi maquina no soporta los shebangs cortos como #!python y no tengo ni idea de como activarlos.

he buscado en el kernel, en bash ya recompile todo eso...

simplemente no se que mas hacer....

----------

## quilosaq

Te sugiero varias cosas:

 *Quote:*   

> - No hagas tantas cosas manualmente (como tocar los ebuilds) a no ser que sepas exactamente lo que estas haciendo.
> 
> - Plantea tu problema mas concretamente. Por ejemplo: No puedo instalar gobject-introspection-0.10.8
> 
> - Di como sabes que tienes un problema. Por ejemplo: hago emerge loquesea... y me da el siguiente error (publica la suficiente información sobre el error)
> ...

 

----------

