Configurar un repositorio de Composer en una intranet local, o incluso en computadoras personales, puede ser una herramienta eficaz en el aseguramiento de un control de versiones sobre los paquetes de terceros instalados en nuestras aplicaciones. Este tutorial muestra de manera sencilla, los pasos a dar para llevar esto a cabo.

Configurando el repositorio

Como pre-requisitos, debemos tener instalado PHP en la máquina donde se publicará el repositorio. Lo primero a hacer es descargar el proyecto de PHP Satis. Esta aplicación facilitará e proceso de creación del repositorio (tan simple como ejecutar desde ella un comando), leyendo todos los archivos .json de los paquetes (compactados .zip descargados de GitHub y encontrados a traves de Packagist) de una carpeta y haciendo un “volcado” de ellos en otra carpeta que servirá como acceso público al repositorio en sí (una sencilla página web). Una vez descargado el proyecto, editamos su archivo composer.json con nuestro editor preferido y ponemos algo como lo que sigue:

{
   "name":"Repositorio Local",
   "homepage":"http://localhost:5800/",
   "require-all":true,
    "archive":{
        "directory": "dists",
        "format": "zip",
        "skip-dev": true
    },
    "repositories": [
        {
            "type": "artifact",
            "url": "D:/Composer/repositories/"
        }
    ]
}

 De esta manera, le decimos a Satis que una vez levantado, nuestro repositorio se llamará “Repositorio Local” (cualquier nombre es aceptable), que se podrá acceder a él a través la dirección es “localhost” por el puerto “5800”, que almacene los paquetes “volcados” en un directorio “dists” dentro de la carpeta donde ejecutemos dicho “volcado”, que esos paquetes se almacenarán en formato “zip” y que la carpeta desde donde ejecutaremos el “volcado” (desde donde, no hacia donde), se encuentra ubicada en “D:/Composer/repositories/”.

En el caso de este ejemplo, en “D:/Composer/” será el directorio en donde se ubicarán los archivos del proyecto satis, los paquetes a “volcar” y la carpeta pública de acceso al repositorio:

Con esto en posición, fijaremos la vista ahora en los paquetes en sí. La estrategia para obtenerlos puede ser cualquiera; una podría ser:

  1. Localizar en Packagist el paquete que estamos buscando. En la sección dedicada al paquete en sí, hay una referencia a la rama en GitHub donde se se le da soporte. En esa misma sección se listan todos y cada uno de los paquetes de los que depende el que buscamos, con las versiones de estos y distribuidos por los que se requieren para su uso, y los que se requieren para su desarrollo.
  2. Acceder a GitHub y descargar el paquete en cuestión. Desde allí tendremos la posibilidad de descargar la versión escogida o simplemente, la que se encuentra en desarrollo, como se puede ver en la imagen:
  3. Guardamos el paquete directamente en la carpeta “D:/Composer/repositories” y editamos el archivo composer.json dentro del compactado para editarlo y asociarle la clave “version”. Este paso es importante pues sin esa clave, Satis no podrá ejecutar un “volcado” sobre ese paquete:

Los pasos anteriores deben ejecutarse sobre todos los paquetes de los que depende el que queremos. Con ellos en posición, volvemos la mirada a Satis.

Abrimos una consola con privilegios de administración, nos ubicamos en “D:/Composer/satis” y ejecutamos el siguiente comando:

php D:\Composer\satis\bin\satis build satis.json D:\Composer\published\

Nota: Se asume que al instalar PHP, se creó una variable global del mismo nombre en el sistema; si esto no fue así, en el comando solo se debe sustituir la palabra “php” con la dirección completa hasta el ejecutable “php.exe”.

Si el comando anterior se ejecutó exitosamente y los paquetes no dieron problemas en el “volcado”, en la carpeta “D:/Composer/published” tendremos el repositorio listo para ser accedido. Desde la consola anterior, nos ubicamos en esta carpeta y ejecutamos el comando:

php -S localhost:5800

Este comando levantará un servidor web desde la mencionada carpeta, lo que provocará que si accedemos a la dirección “localhost:5800”, veremos algo parecido a esto:

Trabajando con nuestro repositorio local

Con nuestro repositorio en marcha, para poder emplearlo en nuestras aplicaciones, solamente debemos configurar el archivo composer.json de esta para que la llave “repositories” luzca así:

"repositories": [
        {
            "type": "composer",
            "url": "http://localhost:5800/"
        },
        { "packagist": false }
    ],

El resto de las operaciones, son las estándar cuando se trabaja con composer; si queremos incluir un paquete en nuestro proyecto ejecutamos

composer require barryvdh/laravel-debugbar

y esto hará que se busque el paquete requerido en el repositorio (el cual debe estar corriendo en “localhost:5800”) y se instale junto con todas sus dependencias.

Finalmente…

Satis se encargará de construir y publicar un repositorio de composer con todas las de la ley. Este repositorio permitirá instalar paquetes (y sus dependencias) que satisfagan las necesidades del proyecto. Para que esto sea siempre cierto, el repositorio deberá contener todos los paquetes que se desee utilizar, actualizándolo a través de los pasos descritos en este post.

Actualización

En las últimas versiones de composer fue incluida una opción de seguridad que impide a composer conectarse a sitios no seguros (que no estén corriendo bajo el protocolo HTTPS). Para lograr que nuestro proyecto pueda actualizar sus paquetes contra nuestro repositorio local, lo más sencillo es deshabilitar esta opción en la clave “config” del composer.json:

"config": {
    "platform": {
        "php": "5.5.9"
    },
    "secure-http": false
},

Ver detalles aquí.

¿Qué tal? ¿Ha sido de ayuda? Déjanos saber.

Anuncios