Problemas con las actualizaciones de Oh-my-zsh

Estándar

Desde hace ya un tiempo uso como mi shell de preferencia zsh y no bash. No es una cuestión de que no me guste bash, sino de que zsh me aporta muchas más posibilidades de personalización y unas características bastante avanzadas en la temástica de corrección de errores tipográficos a la hora de escribir comandos en la terminal y de autocompletado inteligente.

La primera vez que ejecutas zsh el propio intérprete te brinda un buen asistente de configuración para que escojas qué características quieres activas en su fichero de configuración (~/.zshrc) y cómo deben estar configuradas estas características. Pero en mi caso, más que usar este asistente o configurar a mano mi propio fichero de configuración uso oh-my-zsh.No podríamos clasificar a oh-my-zsh como una aplicación ya que no son más que ficheros plantilla de configuración que nos ofrecen funcionalidades a modo de plugins y que nos ayudan a configurar nuestro prompt de manera mucho más sencilla. En la web del repositorio del proyecto, alojado en Github, el autor tiene un manual bien documentado de cómo elegir los plugins que queremos escoger para usar o el tema de colores, entre todos los que tienen publicados, que queremos para nuestro prompt.

El problema me vino cuando, al intentar el programa actualizarse automáticamente, el proceso de actualización falló mostrando un error bastante críptico,

/bin/sh: /tools/upgrade.sh: No such file or directory

. Investigando un poco localizé un bug report en la propia página del proyecto. Entre las posibles soluciones propuestas por los usuarios que comentan este error se puede observar el intentar actualizar el respositorio git que es la carpeta de oh-my-zsh en tu ordenador, alojada como carpeta oculta en tu home (~/.oh-my-zsh). Esto lo podemos hacer situandonos en dicha carpeta con una terminal y ejecutando el comando

git pull origin master

, lo que forzará una recuperación de los cambios más recientes del repositorio y su fusión con la versión actual de tu ordenador. Esto funciona, pero no es (ni de lejos) una solución al problema.

El primer error que vi fue que en la carpeta donde se aloja el script que ejecuta la actualización del repositorio, ~/.oh-my-zsh/tools/upgrade.sh, no tenía permisos de ejecución, por lo que al intentar ejecutarlo el propio shell rechazaría la operación. Cambiamos los permisos del fichero con

chmod +x ~/.oh-my-zsh/tools/upgrade.sh

y ya que estamos también de los ficheros uninstall.sh y check_for_upgrade.sh que tampoco tenían permisos de ejecución. Si tratamos de volver a ejecutar a mano el script upgrade.sh nos daremos cuenta de que el error persiste y nos avisa de que no existe un repositorio git en la carpeta que tratamos de ejecutar los comandos del script. Esto principalmente es debido a que dentro del script la variable del sistema $ZSH, que se usa para localizar la ubicación del repositorio, no está correctamente inicializada. Lo cual podemos arreglar modificando un poco el script. Antes de la linea

cd $ZSH

declaramos una variable

zsh_home=/usr/bin/env ZSH

, la cual es inicializada con lo que nos devuelve el comando env, que busca la variable del sistema llamada ZSH e imprime su valor (en el sistema, la variable ZSH si que está bien inicializada). Posteriormente cambiamos la linea

cd $ZSH

por

cd ${zsh_home}

para usar nuestra variable.

Con esto ya tenemos arreglado el tema de la autoactualización de oh-my-zsh y tendremos actualizaciones periódicas del repositorio. Cabe decir que el problema lo tuve en mi portatil con MacOS X y no en mi sobremesa con Archlinux, y no quiero insinuar nada :p

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s