Enviar Respuesta  Enviar Tema 
[Crudo] Empaquetador - LinuxCrudo
Autor Mensaje
german
Moderador
*****
Moderadores

Mensajes: 224
Grupo: Moderadores
Registro en: Apr 2006
Estado: Sin Conexión
Reputación: 3
Mensaje: #1
[Crudo] Empaquetador - LinuxCrudo

Modifiqué el empaquetador ahora tiene código más limpio, simple y efectivo y es mas prático para usar. Esto implica que los paquetes anteriores no son compatibles con los nuevos, ni tampoco son compatibles con el gestor de paquetes, solo andan con el nuevo (el archivo que se llama 'crudo'). Se lo pueden bajar de acá http://www.linuxcrudo.com.ar/linuxcrudo/...uetador.sh

Ahora, para crear un archivo lc hay que hacer un archivo de texto (que yo le dí la extensión .pqt). Paso a explicar mas adelante...

Paquetes precompilados

Vamos a ver un ejemplo, en este caso las cabeceras del núcleo (lo que esta precedido por # (numeral) son comentarios, no se cuentan:

Código:
## Informacion del paquete ##

nombre=i386-Libc-Headers # Un nombre prolijo (con las mayúsculas).

archivo=i386-libc-headers-2.6.12.lc # El archivo que se va a generar.

descripcion='Contiene las cabeceras de la API del kernel. Son necesarias para compilar la libreria Glibc o cualquier otra libc.' # Descripción breve del paquete, hay que encerrarlo entre comillas porque
#hay espacios es preferente usar comilla simple.

majver=2 # Mayor version, el número de versión más significativo, el de mas a la izquierda.

midver=6 # Middle version, el número de version del medio.

minver=12 # Minor version, el menos significativo el de mas a la derecha

directorio=i386-libc-headers-2.6.12 # El directorio que contiene los archivos a empaquetar

precomp=si # Como es precompilado ponemos si

## Final del archivo ##

Al momento de ejecutar el paquete resulante el contenido de i386-libc-headers-2.6.12 va a ser descomprimido en '/' sin incluir el directorio i386-libc-headers-2.6.12, sólo lo que esté adentro.

Paquetes compilables

Ahora toca el ejemplo de los compilables, la parte inicial es igual al precompilado:

Código:
## Informacion del paquete ##

# Esta parte es igual que el anterior
nombre=Gcc

archivo=gcc-4.0.2.lc

descripcion='La version 4.0.2 del GNU Compiler Collection (Conjunto de compiladores creados por el proyecto GNU). Es el compilador estandar para la mayoria de los sistemas operativos similares a Unix. Gcc soporta una gran cantidad de arquitecturas y puede compilar programas en C, C++, Fortran, Ada, Java, Objetive C, Pascal.'

majver=4

midver=0

minver=2

directorio='gcc-4.0.2'

precomp=no # Como no es precompilado ponemos no

## Opciones de Compilacion ##

before_configure='mkdir -p $DESTDIR/$SRC_DIR-build && cd $DESTDIR/$SRC_DIR-build'
# Comando/s a ejecutar antes de correr ./configure, en este caso se crea un directorio aparte
# para guardar los archivos compilados (es una recomendación del gcc, pero no es obligatoria)
# También tenemos que usarlo para ubicarnos dónde está el paquete, $SRC_DIR contiene el nombre
# del directorio donde estan los fuentes y $DESTDIR la ruta a el mismo

configure_cmd='../$SRC_DIR/configure' # El comando configure, sinó usa configure dejarlo en blanco

configure_params='--prefix=/usr --disable-multilib --enable-languajes=c,c++ --enable-c99 --enable-long-long --enable-threads=posix --disable-libstdcxx-pch --enable-_cxa_atexit'
# Parámetro para configure, generalmente va --prefix=/usr solamente

make_cmd='make bootstrap' # El comando para compilar, generalmente make

destdir_var='DESTDIR' # Variable para hacer fakeroot (la explicación está mas abajo)

make_install_cmd= # Comando para instalar lo compilado, si deja en blanco se elegir 'make install' que es la
#opcion que se usa generalmente

clean_cmd='rm -f $DESTDIR/$SRC_DIR && rm -f $DESTDIR/$SRC_DIR-build' # comando para borrar los archivos  
# temporales generados para compilar (no los instalados) deja en 'rm -f $DESTDIR/$SRC_DIR' si queda en
# blanco, si no creo ningun archivo con los comando anteriores.

## Fin del Archivo  ##

LinuxCrudo, como la mayoría de las distribuciones, utiliza el método fakeroot (disimulación de raíz en castellano) para obtener la información de los paquetes. Este método consiste en instalar el contenido del paquetes en un árbol temporal aparte (algo así como otro '/') para luego realizarle la post configuración y finalmente moverlos a donde deben estar (el verdadero '/').

Cuando se ejecuta 'make install' para instalar el paquete este copia los archivos a nuestro árbol raíz, pero si se instala directamente no vamos a poder hacer fakeroot ni guardar la información del paquete. Para solucionar este problema los archivos 'Makefile' tienen (o deberían tener) una variable para hacer fakeroot (osea instalar en otra ubicación). Generalmente el nombre de esta variable es DESTDIR, tendremos que buscar entre los archivos INSTALL o README a ver si dice o en última instancia examinar el archivo 'Makefile' o 'Makefile.in'. En otras ocasiones, la variable directamente no existe y hay que crearla a mano editando el Makefile o Makefile.in, pero no voy a explicar como porque sería un tema bastante extenso, si quieren me avisan y hago un post aparte.


Creación del paquete

Para crear el paquete ejecutamos:
Código:
# empaquetador.sh archivo.pqt

Remplazando archivo.pqt con el archivo que hayamos hecho nosotros y ya está tenemos un archivo autoinstalable!

03-06-2007 12:14 PM
Visita el website del usuario Encuentra todos los mensajes de este usuario Cita este mensaje en tu respuesta
german
Moderador
*****
Moderadores

Mensajes: 224
Grupo: Moderadores
Registro en: Apr 2006
Estado: Sin Conexión
Reputación: 3
Mensaje: #2
RE: [Crudo] Empaquetador - LinuxCrudo

Agregué un par de variables mas (opcionales) para aquellos paquetes que requieran algunos comandos extraños para la compilación.

03-14-2007 08:24 PM
Visita el website del usuario Encuentra todos los mensajes de este usuario Cita este mensaje en tu respuesta
Enviar Respuesta  Enviar Tema 

Posibles Temas Similares...
Tema: Autor Respuestas: Vistas: Ultimo Mensaje
  [crudo] Arrancar desde una Flash (USB) exos 1 218 03-06-2008 05:56 PM
Ultimo Mensaje: german
  [Crudo] Estado - LinuxCrudo german 25 3,067 11-01-2007 12:44 AM
Ultimo Mensaje: Feru
  [Crudo] Manual de Instalación - LinuxCrudo german 2 1,624 06-13-2007 05:27 PM
Ultimo Mensaje: german
  [Crudo] Imagen warp 1 733 04-10-2007 05:14 PM
Ultimo Mensaje: german

Ver la Versión para Impresión
Mandar este Tema a algún Amigo
Subscríbete a este Tema | Agrega este Tema a Tus Favoritos

Salto de Foro: