27 feb. 2011

Bundles de Chakra

Coloco el contenido de la wiki en español:

Los bundles de Chakra están a medio camino entre el concepto de bundles de Mac OS X y el concepto de dependencia de paquete. Esto es, los bundles son aplicaciones instalables con un sólo clic, o desde un punto de vista más técnico también se podría decir que son sistemas de ficheros automontables que contienen todos los archivos necesarios para ejecutar una aplicación que no está en los repositorios y automatizan la instalación de las dependencias que necesiten y que sí estén en los repositorios. Los bundles de Chakra también almacenan dentro del propio bundle los archivos de configuración del usuario relacionados con el bundle, asegurando así la limpieza del directorio home del usuario.

Tipos de bundles

Chakra tiene tres tipos diferentes de bundles: bundles lanzables, instalables y configurables. Todos ellos son bundles de software, pero se diferencian en la manera en que interactuan con el usuario.

Bundles lanzables

Los bundles lanzables son bundles que se ejecutan al hacer clic sobre ellos.
Para crear un bundle lanzable, necesitará ciertos archivos. El archivo principal es PKGINFO, que contiene toda la información necesaria para ejecutar el bundle. PKGINFO es un archivo de texto con varias variables, una por línea.

Bundles lanzables UnionFS Chrooted

Éste tipo de bundle lanzable guarda sus datos de configuración en su interior. Por ejemplo, puede modificar la configuración de una aplicación y pasarsela modificada a sus amigos. Se trata de una imagen corriente de un sistema de ficheros ext4 con permisos de lectura/escritura, que contiene los siguientes archivos:
apps.sqfs
Una imagen de un sistema de ficheros comprimido mediante squashfs/lzma que contiene todos los binarios, librerías, o ficheros necesitados o determinados por la aplicación empaquetada en el blunde.
data.ext4
Un sistema de ficheros ext4 corriente con permisos de lectura/escritura, que será montado en el directorio 'home/default' de chroot. Aquí es donde la aplicación guarda sus datos de configuración. Por ejemplo: GIMP guarda las posiciones de las ventanas, las brochas agregadas, los gradientes, etc.
PKGINFO
.desktop
.svg

Bundles lanzables nativos

Un sistema de ficheros comprimido mediante squashfs/lzma, que contiene lo siguiente:
PKGINFO
.desktop
.svg
También incluye los datos reales, ya que es la raíz del sistema de ficheros, es decir /usr, /opt/foo, special_launcher.sh.

Bundles instalables

Algunas aplicaciones tienen acuerdos de licencia especiales (filosoficos, politicos, o de cualquier otro tipo), y en consecuencia tenemos que pedirle al usuario permiso para ejecutar la aplicación contenida en el bundle. También puede haber algunas otras aplicaciones que usted quiera instalar realmente en el sistema anfitrión. Por lo tanto, cuando haga clic sobre un bundle instalable se le mostrará un diálogo que le solicitará la contraseña del administrador, seguido del habitual asistente siguiente-siguiente. También puede preguntarle si desea aceptar las licencias, o en que localización desea instalar la aplicación.

Bundles configurables

Algunas veces usted puede necesitar configurar algunos (o muchos) sistemas de una cierta forma, ésto es para lo que sirven los bundles configurables. PEAR/LAMP/CUSTOMIZED_BUILD_5/whatever

PKGINFO

Éstas son todas las variables que puede tener un archivo PKGINFO:
name
Su valor será el nombre del bundle creado.
version
Su valor será la versión del bundle creado.
desktop
Su valor define el nombre del archivo escritorio dentro de la carpeta principal del bundle.
packager
Nombre y email del empaquetador del bundle.
description
Es la descripción del bundle. No es multi-línea, así que utilice '\n' si la necesita.
screenshot
Una URL o referencia a una captura de pantalla local (dentro del bundle) de la aplicación empaquetada en el bundle.
url
Una referencia web para la aplicación empaquetada en el bundle.
icon
Su valor define el nombre del icono dentro de la carpeta principal.
type
Es el tipo de bundle.
deps
Una lista de nombres de paquetes necesitados por el bundle y sus dependencias. Éstos paquetes deben estar disponibles en los Repositorios de Chakra. En esencia, ésta variable no debería ser utilizada, a menos que sepa lo que está haciendo. (Querrá controlar los binarios por razones de seguridad).
pkgz
Es una lista de los binarios precompilados (paquetes de distribución) a incluir en el bundle. Normalmente serán la propia aplicación y todos los binarios, librerías, ect que se necesiten.
build
Ésta es la lista completa de paquetes a construir. Además, cualquier dependencia de make que no se encuentre en nuestros repositorios debe tener el orden correcto de construcción, y se necesita una carpeta con el archivo PKGBUILD relacionado para cada aplicación que aparezca en ésta lista.
env
Se utiliza para pasar variables de entorno personalizadas al chroot union. No es utilizada como las variables normales. En su lugar, reemplaza el = con un == y las variables están separadas por ,,, tal como se muestra en el siguiente ejemplo:
env==PATH=/alguna/ruta:$PATH:$HOME/bin,,,DEBUGMODE=1
exec
Su valor define donde está ubicado el archivo binario de la aplicación, normalmente será en /usr/bin o /opt/bin. Es relativo al directorio real de ejecución del bundle, $HOME/.cinstall/.
Los bundles instalables pueden tener algunas variables adicionales:
haslicense
Si su valor es true, le preguntará al usuario si desea aceptar la licencia especificada por licensefile.
licensefile
Un archivo de texto de 80 carácteres de ancho.
askinstallpath
Si su valor es true, le preguntará al usuario donde desea instalar los datos de la aplicación.
pixmap
Un mapa de píxeles (una imagen) de 160 pixeles de ancho, y 450 pixeles de alto, utilizado para especificar una imagen personal para la instalación.
Un ejemplo de un archivo PKGINFO para un bundle lanzable:
version=3.3.3
release=3
description=Un cliente FTP, FTPS, y SFTP rápido y seguro
url=http://filezilla-project.org/
packager=Manuel Tortosa 
type=Launcher
name=filezilla
desktop=filezilla.desktop
icon=filezilla.png
deps=dbus-core xdg-utils libidn hicolor-icon-theme gtk2 gstreamer0.10-base
pkgz=wxgtk filezilla
build=libgnomecups libgnomeprint perl-xml-simple icon-naming-utils gnome-icon-theme libgnomecanvas libgnomeprintui ccache wxgtk filezilla
env==
exec=/usr/bin/filezilla 
 
 
 

No hay comentarios:

Publicar un comentario