Archivo

Archivo para la categoría ‘Distribuciones’

Python: /bin/sh: Syntax error: Bad fd number

Martes, 22 de junio de 2010 piponazo 3 comentarios

Editado/Edited: 25/06/10

Estoy probando unos scripts en Python que me han pasado (y que han sido desarrollados sobre Debian) y he tenido problemas a la hora de ejecutarlos. Cuando intentaba ejecutar estos scripts en mi ordenador me lanzaban el siguiente mensaje de error, entre otros:

/bin/sh: Syntax error: Bad fd number

El problema se encuentra en las llamadas que se hacen en el script a os.system() para ejecutar algunos comandos de consola. Como ya he dicho, los scripts han sido desarrollados sobre una plataforma Debian, pero en mi distribución Ubuntu no han funcionado. Esto se debe a que en ubuntu por defecto los comandos se ejecutan por sh y no por bash.

La solución que he visto ya propuesta en varios sitios es eliminar el comando sh de su sitio y hacer un enlace simbólico desde el comando bash a sh. Es una forma un poco bestia de hacerlo … pero no he visto ninguna otra solución. Si alguien conoce una forma más elegante de hacer esto que lo comente por favor.

sudo mv /bin/sh /bin/sh.bak
sudo ln -s /bin/bash /bin/sh

Visto aquí.

Otra solución mejor

En vez de tener que hacer este enlace simbólico mediante el módulo subprocess podemos especificar que terminar queremos usar mediante la opción executable. A continuación os dejo un método que me he creado para hacer llamadas a programas por la terminal usando /bin/bash en vez de la terminal por defecto (/bin/sh en ubuntu)

def run_shell_program (cmd):
  try:
    retcode = subprocess.call(cmd, shell=True, executable="/bin/bash")
    if retcode != 0:
      print >> sys.stderr, "Error executing command: %s" % cmd,\
      "(return code: %s)" % retcode
  except OSError, e:
    print >>sys.stderr, "Execution failed: %s" % cmd, e

See this page.

A better solution

Instead of making the symbolic link explained in the above post we can use the subprocess module in python in order to specify the shell executable we want to use. The next method written in python is used to run shell command using /bin/bash instead of the default shell command (/bin/sh in Ubuntu)

def run_shell_program (cmd):
  try:
    retcode = subprocess.call(cmd, shell=True, executable="/bin/bash")
    if retcode != 0:
      print >> sys.stderr, "Error executing command: %s" % cmd,\
      "(return code: %s)" % retcode
  except OSError, e:
    print >>sys.stderr, "Execution failed: %s" % cmd, e
GD Star Rating
loading...
  • Share/Bookmark

Redimensión de ventanas lenta con driver propietario de ATI

Viernes, 4 de junio de 2010 piponazo 1 comentario

Desde que me hice con mi última tarjeta gráfica ATI RADERON HD 5770 he sufrido problemas de rendimiento en diferentes distribuciones GNU/Linux a la hora de habilitar los efectos de escritorio (Compiz). En su día me estuve informando de cual era el problema que había, ya que con mi anterior tarjeta Nvidia de menores características iba todo super fluido. Si no recuerdo mal todo se debe a un problema que hay en el código del servidor gráfico X. Para que una parte del código sea compatible con las tarjetas gráficas Intel se tuvo que habilitar una característica que hizo que el redimensionamiento de ventanas con las tarjetas ATI fuese más lento. Siento no dar más detalles acerca de este hecho en concreto, pero no tengo tiempo y solo quería comentar la solución que he encontrado para solventar el problema en Ubuntu 10.04. La solución es bien sencilla, basta con agregar el repositorio que encontraréis en esta dirección, actualizar los repositorios mediante aptitude o apt-get y cuando actualicéis el sistema y reiniciéis el equipo todo debería funcionar sobre ruedas :D.

Since I bought mi last graphic card ATI RADEON HD5770 I’ve suffered performance problems in different GNU/Linux distros after enabling the desktop effects (Compiz). In its day I was searching information about the problem because of with my previous Nvidia graphics card all run like a charm. If I remember correctly this problem is caused by a problem in the X graphic server code. In order to make one part of the code compatible with Intel graphic cards one feature was enabled and this fact made slower the performance in ATI graphic cards. I’m sorry for not giving more details about this particular fact, but I have no time and I only want to tell you the solution found to solve the problem in Ubuntu 4.10. The solution is very easy, you only have to add the repository you can found in this page, update the repositories with aptitute or apt-get and upgrade the system. When you reboot the system all will run smoothly :D.

GD Star Rating
loading...
  • Share/Bookmark

Instalar Matlab r2008b en Debian

Sábado, 17 de abril de 2010 piponazo Sin comentarios

Ya he hablado en un par de ocasiones (aquí y aquí) de Octave, una alternativa libre muy válida a Matlab, pero que aún no es compatible 100% con el segundo. He estado validando piezas de código Matlab con Octave hasta hace poco sin problemas, pero recientemente me he visto en la obligación de instalar Matlab porque Octave no me estaba retornando los resultados esperados en algunos experimentos. En esta entrada explico el proceso de instalación de Matlab en Debian Lenny, ya que hay algunas peculiaridades que hay que solventar para instalar el programa.

Leer más…

GD Star Rating
loading...
  • Share/Bookmark

Error 18 en Grub: Selected cylinder exceeds …

Viernes, 2 de abril de 2010 piponazo 1 comentario

Recientemente he vuelto a usar Debian y en esta ocasión me he encontrado con un pequeño incidente provocado por nuestro querido gestor de arranque del sistema GRUB. La situación es la siguiente. Al intentar arrancar Windows 7, grub me lanzaba el siguiente error: Leer más…

GD Star Rating
loading...
  • Share/Bookmark

Octave: Instalando paquetes

Viernes, 19 de febrero de 2010 piponazo 4 comentarios

Octave esun lenguaje de alto nivel principalmente orientado a computación numérica. Junto a Scilab, plantan cara a la conocida suite Matlab, pero eso si de forma gratuita. No obstante Octave es parte del proyecto GNU y por lo tanto con licencia GPL, algo a lo que Scilab no se acoge y por lo tanto me he decantado por empezar a usar el primero. He de decir que es compatible con la mayoría de la funcionalidad que existe en Matlab, pudiendo trabajar con los mismos ficheros de funciones que desarrollan investigadores de todo el mundo y con los mismos ficheros de datos que Matlab almacena.

Leer más…

GD Star Rating
loading...
  • Share/Bookmark