7 de enero de 2019

Como instalar Composer en Cygwin

Composer es una excelente herramienta de PHP para gestionar las dependencias de paquetes externos a nuestra aplicación, en consecuencia se hace imprescindible poder usar Composer en Cygwin. En este artículo explicaremos como instalar Composer en Cygwin.

Asumiremos que ya tenemos instalado Cygwin sobre Windows, pero aún no hemos instalado Composer para usarlo desde Cygwin, porque el proceso para hacerlo no es directo.

Microsoft Windows es una buena plataforma de trabajo, pero tiene algunas deficiencias para el desarrollo web, en especial su falta de soporte nativo para operar una buena consola Bash, ya que es necesaria para:

  • Ejecutar rutinas bash.
  • Correr Git desde la línea de comandos.
  • Disponer de las facilidades de la consola de Linux, como tuberías, redireccionamiento de salidas, uso de expresiones regulares entre otras.

Aunque Git se puede instalar en Windows con una pequeña terminal recortada para el uso de Git llamada Gitbash, no es una solución para el resto de las tareas.

En consecuencia, se hace deseable contar con las facilidades de una consola Bash en Windows. A este respecto, una buena opción es la utilería Cygwin, que emula una terminal Bash-Linux sobre Windows.

Cygwin lo podemos descargar desde: https://www.cygwin.com.

Una vez instalado, necesitamos instalar Composer.

Composer podríamos decir que una versión moderna y mejorada de PEAR.

Instalar Composer en Cygwin

Composer actualmente se distribuye con una archivo .phar que requiere del interprete PHP en la línea de comandos para su ejecución. Aunque podemos hacer una martingala para vincular el interprete de PHP en windows para que funcione con Cygwin, no es mi solución preferida. Pues desde el mismo instalador de Cygwin podemos ir agregándole los componentes que necesitemos.

Desde el propio instalador de Cygwin podemos instalar:

  • Bash.
  • Git.
  • Cliente SSH.
  • Interprete PHP.
  • Vim.
  • Módulos de PHP.
  • Librerías y comandos de Linux.

El instalador generalmente lo podemos encontrar en el Descargas de Windows con el nombre: setup-x86_64.exe.

Pero por el momento, no es posible instalar Composer desde el instalador de Cygwin, así que se procederá a instalar manualmente Composer:

  1. Creamos un directorio llamado bin en el raiz del directorio de usuario de Cygwin, podemos abrir la consola de Cygwin y digitar:
cd ~
mkdir bin
  1. Cargamos manualmente el archivo composer.phar, encontramos su última versión en la url https://getcomposer.org/download/1.8.0/composer.phar.

  2. Procedemos a ubicar el archivos composer.phar en el directorio que recién hemos creado en Cygwin eso lo podemos hacer usando el Explorador de archivos de Windows colocándonos en la ruta donde hemos creado el directorio bin, esto es: C:\cygwin64\home\Pato\bin.

  3. Desde la consola de Cygwin le damos permisos de ejecución al archivo composer.phar:

cd bin
chmod 755 composer.phar
  1. Ahora necesitamos, hacer disponible el archivo composer.phar como un comando tradicional de Linux, para tal efecto debemos hacer disponible para el usuario actual el path hacia el archivo. Este proceso requerirá alterar el archivo de configuración de la consola de Cygwin llamado .bash_profile, usamos el editor de texto llamado nano invocado desde la consola:
cd ~
ls -la
nano .bash_profile

Abierto el archivo en el editor nano, debemos agregar una línea de código al final del archivo, la línea es:

alias composer="php ~/bin/composer.phar"

Lo anterior creará un alías, que significa que tipear composer será interpretado como php ~/bin/composer.phar. Luego salimos del editor nano con la combinación de teclas Ctr + x, confirmándole que sí deseamos grabar el archivo.

  1. Finalmente, para que estos cambios tomen efecto sin la necesidad de cerrar la terminal, ejecutamos el comando:
source ~/.bash_profile

Entonces, ya tendremos disponible a Composer en la punta de los dedos tan sólo ejecutando el comando:

composer

Eso es todo, aunque podríamos tener un problema si Cygwin le falta algún módulo de PHP, eso lo veremos a continuación.

Problemas que pueden suceder

Si se le presenta el error:

PHP Fatal error:  Uncaught Error: Call to undefined function Symfony\Polyfill\Mbstring\iconv() in phar

Significa que su instalación de PHP tiene paquetes faltantes para ejecutar Composer.

Puede ejecutar desde la consola de Cygwin, para chequear los módulos instalados:

php -m

Si le falta la extensión iconv deberá instalarlo desde el mismo instalador de Cygwin llamado setup-x86_64.exe. La instalación requiere cerrar cualquier consola de Cygwin que tengamos abierta y tomará la descarga e instalación algunos minutos.

Por otro lado, si se presenta que no tenemos instalado el intérprete PHP podemos instalardo haciendo doble click desde el Explorador de Archivos de Windows en el archivo de instalación de Cygwin C:\cygwin64\home\Pato\bin.

Referencias:

En este artículo: https://stackoverflow.com/questions/12276946/composer-cygwin, se explicar cómo vincular el interprete PHP de Windows con la consola de Cygwin para luego instalar de Composer, lo cual no es especialmente recomendable en especial si disponemos una más sencilla manera de hacerlo e independiente de la instalación de PHP en Windows, como lo explicamos anteriormente.