Packager + Composer = repositorios privados – Parte 2

Siguiendo con la serie de posts referentes a packager. En esta segunda parte vamos a integrar packager y composer para poder crear un repositorio que tenga nuestros propios paquetes, pero además que contengan las dependencias de estos y otros paquetes que utilizamos en nuestros proyectos.

Recordamos que tenemos un repositorio con la siguiente estructura

.
├── packager.json
├── packages
│   └── packager-1.0.0.zip
└── packages.json

Ahora bien, supongamos que nuestros proyectos tienen dependencia con los siguientes componentes de symfony

symfony/console 2.1
symfony/finder 2.1
symfony/process 2.1
symfony/yaml 2.1
symfony/filesystem 2.1

Lo que vamos a necesitar ahora es crear un file llamado “composer.json” al nivel de “packages.json” donde declararemos nuestras dependencias y configuraremos a composer para que guarde los files que baja en el directorio donde nosotros alojamos nuestros paquetes (cache-files-dir=./packages)

{
    "name": "rgnu.com.ar/repository",
    "description": "Download repository dependencies",
    "type": "repository",
    "license": "GPL-3.0",
    "version": "0.1.1",
    "keywords": [ "repository" ],

    "require": {
        "symfony/console": "2.1.*@stable",
        "symfony/finder": "2.1.*@stable",
        "symfony/process": "2.1.*@stable",
        "symfony/filesystem": "2.1.*@stable",
        "symfony/yaml": "2.1.*@stable"
    },

    "config": {
        "cache-files-dir": "./packages"
    }
}

Una ves realizado esto ejecutamos un composer update, para que este baje las dependencias

$ ../composer.phar update
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing symfony/console (v2.1.8)
    Downloading: 100%         

  - Installing symfony/finder (v2.1.8)
    Downloading: 100%         

  - Installing symfony/process (v2.1.8)
    Downloading: 100%         

  - Installing symfony/filesystem (v2.1.8)
    Downloading: 100%         

  - Installing symfony/yaml (v2.1.8)
    Downloading: 100%         

Writing lock file
Generating autoload files

Una vez realizado el update, podemos borrar tanto el directorio vendor que se creo, como el file composer.lock

$ rm -rf vendor composer.lock

Ahora nuestro repositorio debería tener el siguiente contenido

.
├── composer.json
├── packager.json
├── packages
│   ├── packager-1.0.0.zip
│   └── symfony
│       ├── console
│       │   └── 2.1.8.0-v2.1.8.zip
│       ├── filesystem
│       │   └── 2.1.8.0-v2.1.8.zip
│       ├── finder
│       │   └── 2.1.8.0-v2.1.8.zip
│       ├── process
│       │   └── 2.1.8.0-v2.1.8.zip
│       └── yaml
│           └── 2.1.8.0-v2.1.8.zip
└── packages.json

Ahora lo único que nos queda es volver a realizar el build del repositorio para que incluya los paquetes que composer acaba de bajar

$ ../packager.phar build:repository
Loading Config ./packager.json
Process Repository ./
Add package rgnu.com.ar/packager (1.0.0)
Add package symfony/yaml (v2.1.8)
Add package symfony/console (v2.1.8)
Add package symfony/filesystem (v2.1.8)
Add package symfony/process (v2.1.8)
Add package symfony/finder (v2.1.8)

En la próxima entrega veremos como automatizar todo el proceso con Jenkins, de esta forma solo nos queda mantener el file “composer.json” con las dependencias y agregar nuestros paquetes al repositorio.

Remote Tail sobre HTTP con Shell Script

Remote Tail sobre HTTP con Shell Script

Surgió un problemática en el trabajo, debíamos debuguear lo que estaba sucediendo en unos Solr que se encontraban en el datacenter y la única via de acceso a los logs era por medio de un webserver.

Ubuntu 11.04 novedades

Ubuntu 11.04 novedades

El próximo Ubuntu 11.04 nombre clave Natty Narwhal será lanzado en abril de este año. Va a incluir bastantes novedades, principalmente en la interface. La nueva versión de Ubuntu incluirá Unity.