Exportar PDF Exportar ODT
 

¿Qué es Canaima Base?

Esta actividad consiste en la generación de una imagen instalable mínima de Canaima GNU/Linux (llamada canaima-primera-base.iso), en la cual sólo se contemplen los paquetes indispensables necesarios para tener un Canaima GNU/Linux incipiente, básico y limpio, desde el cual sea posible documentar el resto de los procesos de creación de la distribución y consolidar su concepto de meta-distribución, permitiendo la generación de otras distribuciones de forma documentada, normalizada y apropiable socialmente.

Este trabajo es continuación del trabajo propuesto (y no finalizado) en la Cuarta Cayapa Canaima. Más información en la página de la Cuarta Cayapa.

¿Para Qué Canaima Base?

Al tener una base mínima de Canaima GNU/Linux se propicia la generación de “sabores”, ya que existirá un punto de partida común, con documentación suficiente (de la base en sí) y de cómo se genera un sistema GNU/Linux funcional y completo para cualquier labor a partir de esta base.

Actualmente, la generación de un sabor de Canaima es más una idea que una posibilidad real. Se habla de ideas maravillosas como “Canaima Educativo”, “Canaima Radio”, “Canaima Tal Cuestión”, pero la generación de estas propuestas están muy limitadas debido a que la documentación y los métodos para lograr esto no están suficientemente documentados y hay partes que no han sido desarrolladas (como la Primera Base). Esto conduce a que las buenas propuestas comunitarias no se concreten por falta de una base simple desde la cual crecer fácilmente hacia cualquier dirección necesaria.

Este trabajo tendrá como impacto la posibilidad para cualquier persona o grupo de poder generar, a partir de Canaima GNU/Linux como METADISTRIBUCION, la Distribución (sabor) que desee para sumar su esfuerzo al Proyecto Canaima GNU/Linux.

Herramientas y Recursos

Mencionar todas las herramientas y recursos utilizados para la obtención de resultados:

  • Mirror de Canaima
  • Máquina para Compilar y empaquetar
  • Máquina (puede ser virtualizada) para probar los resultados

Integrantes

En esta sección estarán los nombres y apellidos de los integrantes de la mesa de trabajo:

  • Franklin G. Mendoza (Debiansick)
  • Jesús Lara (phenobarbital)
  • Luis Martinez (HuntingBears)
  • Octavio Rossell ([TR0N])

Objetivos de la Mesa de Trabajo

  • Generar una Base de Canaima GNU/Linux, consistente en una base instalable mínima desde la cual se puedan instalar todos los demás sabores de Canaima GNU/Linux.
  • Documentar el proceso de generación de esa Base Mínima.
  • Generar un repositorio nuevo con la estructura de secciones y ramas, para construir con él la base mínima.

¿Cómo hacer Canaima Base?

Construcción del Repositorio Canaima

La generación de un nuevo repositorio permite la organización en un único origen de paquetería a todos los paquetes necesarios por la distribución.

Un repositorio es una fuente desde donde las distribuciones GNU/Linux extraen los paquetes para ser instalados, Canaima GNU/Linux utiliza una estructura de repositorios basada en GNU/Linux Debian y paquetería en formato .deb.

Repositorio

Para la construcción del repositorio se utilizó la herramienta reprepro, esta herramienta está diseñada para gestionar los origenes de paquetes que están en el repositorio y la incorporación de nuevos paquetes.

Un repositorio único permite tener toda la paquetería centralizada alrededor de un único punto, evitando problemas de dependencias entre paquetes o el reemplazo accidental cuando se incorpora un repositorio de Debian GNU/Linux en las listas de APT.

Estructura del Repositorio

El repositorio Canaima GNU/Linux ha sido re-organizado para reflejar los cambios previstos, las secciones también han sido modificadas para reflejar el tipo de participación de la paquetería.

Rama: División de la distribución basada en la estabilidad de la misma, con una rama especial (experimental) para la inclusión de cualquier paquete para ser incorporado a desarrollo y pruebas.

Sección: Es la división de una rama de acuerdo al origen del paquete, principal (main) es la rama de la paquetería Canaima, contribucion la paquetería Debian GNU/Linux, extras, paquetería traída de otras distribuciones o backports y privativo, donde se colocan los paquetes que no cumplen con licenciamiento libre.

Secciones:

  • Principal: Contiene la paquetería oficial para Canaima GNU/Linux (paquetes de Canaima y paquetes Canaimizados: modificados para Canaima).
  • Contribución: Todos los paquetes del Universo Debian GNU/Linux y otros paquetes incorporados.
  • Extras: Paquetería no-Debian incorporada desde fuentes externas y/o paquetes desde backports-debian.
  • Privativo: fuentes no libres (Debian Non-free) y otros paquetes que no tienen licencia libre o que no cumplen el contrato social de libertad de la distribución Canaima GNU/Linux.

Ramas:

  • Estable: Versión estabilizada de Canaima GNU/Linux (nombre: roraima).
  • Pruebas: Versión de pruebas (resolución de errores) de Canaima GNU/Linux (nombre: auyantepui).
  • Desarrollo: Versión de desarrollo (incorporación de nuevas funcionalidades, cambios mayores) de Canaima GNU/Linux (nombre: kukenan).
  • Mondongo: Incorporación de paquetería no oficial, fuentes no Canaimizados y otras aplicaciones para ser probadas e incorporadas en Canaima GNU/Linux.

Creación de un repositorio con Reprepro

Instalamos los paquetes necesarios para la construcción del repositorio:

aptitude install reprepro pinentry-qt devscripts

Y creamos el directorio donde se construirá el repositorio:

mkdir /opt/repo/repositorio/{conf,incoming,override} -p

Quedando:

tree
.
 apt
   conf
   incoming
   override

Los archivos importantes que representa la estructura del repositorio son conf/contributions conf/updates y conf/options.

conf/distributions

El archivo “Conf/distributions” representa la estructura de la distribución, algunos parámetros:

Codename: Nombre indentificativo de la distribución (usado en dists/).

Suite: Campo opcional es simplemente copiado en el Release File, contiene los nombres alias del Codename (stable, testing, unstable) Para que los symlinks sean creados, debe usarse la opción –createsymlinks en el reprepro.

Version: Versión opcional de la Suite.

.Origin: Origen de la distribución (ejemplo: Canaima)

Label: Etiqueta identificativa de la Suite.

Descripcion: Identificación y descripción de la Suite.

Architectures: Soporte de arquitecturas para la construcción del Repositorio.

Components: Componentes requeridos para construir la distribución.

La configuración actual de conf/distributions para la versión (rama) Canaima “Roraima” es:

# -- estable
Origin: Canaima
Codename: roraima
Suite: estable
Label: estable
Version: 3.0
Description: Canaima GNU/Linux estable
Architectures: i386
Components: principal contribucion extras privativo
Update: - debian canaima
UDebComponents: main

Esta configuración crea las secciones “principal, contribución, extras y privativo” para la versión estable “roraima” de Canaima GNU/Linux.

conf/updates

Conf/Updates es el archivo que describe como se “llena” o actualiza el repositorio Canaima GNU/Linux.

Nombre: Nombre que requiere conf/distributions en la sección “Update”.

Method: Ruta (URL) donde se descargarán los paquetes.

Fallback: Ruta (URL) donde descargará paquetes si falla la anterior ruta.

Suite: Versión de la distribución que se descargará al repositorio.

Architecture: Arquitectura a ser configurada en el repositorio.

Components: Como se sincronizarán las secciones de la distribución base (Debian) con las de Canaima.

UdebComponents: Define si la sección de Debian-installer será utilizada (por defecto, sí).

El archivo conf/updates para nuestro repositorio será:

Name: debian
Method: http://localhost/mirror/debian
Suite: squeeze
Architectures: i386
Components: main>contribucion contrib>contribucion non-free>privativo
Name: canaima
Method: http://localhost/mirror/canaima
Suite: roraima
Architectures: i386
Components: usuarios>main
UdebComponents: none

Como vemos, las secciones (componentes) de Debian (main, contrib, non-free) son re-organizadas en las versiones (main>contribucion, contrib>contribucion) y (non-free>privativo).

Creando la estructura del repositorio

Cuando se termina de configurar reprepro, se ejecuta el comando de construcción de los directorios.

reprepro -VVV export

Genera la estructura de directorio:

.
 conf
 db
 dists
 incoming
 lists
 override
 pool

Y en dists genera la estructura de directorio de la distribución:

.
 roraima
   contribucion
      binary-i386
   extras
      binary-i386
   main
      binary-i386
      debian-installer
          binary-i386
   principal
      binary-i386
      debian-installer
          binary-i386
   privativo
       binary-i386

Luego que tenemos la estructura de directorio, procedemos a “llenar” el repositorio con paquetes:

reprepro -VVV --noskipold -b . update

Y tendremos listo el repositorio.

Agregando un paquete manualmente

Para incluir manualmente un paquete .deb al repositorio, podemos incluir:

reprepro -Vb . includedeb roraima /home/jesuslara/canaima-llaves_3.0+2_all.deb

Anexo: estructura de directorios del repositorio

.
 conf
 db
 dists
    roraima
        contribucion
        extras
        main
        privativo
 incoming
 lists
 override
 pool
   contribucion
      2
      3
      4
      6
      9
      a
      b
      c
      d
      e
      f
      g
      h
      i
      j
      k
      l
      lib3
      liba
      libb
      libc
      libd
      libe
      libf
      libg
      libh
      libi
      libj
      libk
      libl
      libm
      libn
      libo
      libp
      libq
      libr
      libs
      libt
      libu
      libv
      libw
      libx
      liby
      libz
      m
      n
      o
      p
      q
      r
      s
      t
      u
      v
      w
      x
      y
      z
   main
      a
      b
      c
      d
      e
      f
      g
      h
      i
      j
      k
      l
      liba
      libb
      libd
      libf
      libp
      libr
      libs
      libt
      libu
      libw
      libx
      m
      n
      o
      p
      r
      s
      t
      u
      v
      w
      x
      z
   privativo
       a
       b
       c
       d
       e
       f
       g
       h
       i
       j
       l
       liba
       libc
       libe
       libg
       libm
       libs
       libv
       m
       n
       o
       p
       q
       r
       s
       t
       u
       v
       w
       x
       y
       z

Configurando la subida de paquetes

Para subir paquetes al repositorio se debe configurar dupload, que permite subir paquetes al repositorio Canaima GNU/Linux.

Luego de instalado dupload:

apt-get install dupload

Este debe ser configurado en el archivo /etc/dupload.conf

/etc/dupload.conf

$cfg{'canaima'} = {
      fqdn => "localhost",
      login => "jesuslara",
      method => "scpb",
      incoming => "/opt/repo/repositorio/incoming/",
      # The dinstall on ftp-master sends emails itself
      dinstall_runs => 1,
};

Luego de configurado dupload, podemos subir manualmente un archivo a la carpeta “incoming” del repositorio.

Ejemplo:

dupload --to canaima canaima-llaves_3.0+2_i386.changes

Lo que devuelve:

dupload note: no announcement will be sent.
Checking signatures before upload...GPG signature couldn't be checked, probably because of missing key
Uploading (scpb) to localhost:/opt/repo/repositorio/incoming/
[ job canaima-llaves_3.0+2_i386 from canaima-llaves_3.0+2_i386.changes
   canaima-llaves_3.0+2_all.deb, size ok, md5sum ok, sha1sum ok, sha256sum ok
   canaima-llaves_3.0+2.orig.tar.gz, size ok, md5sum ok, sha1sum ok, sha256sum ok
   canaima-llaves_3.0+2.debian.tar.gz, size ok, md5sum ok, sha1sum ok, sha256sum ok
   canaima-llaves_3.0+2.dsc, size ok, md5sum ok, sha1sum ok, sha256sum ok
   canaima-llaves_3.0+2_i386.changes ok ]
Uploading (scp) to canaima (localhost)
[ Uploading job canaima-llaves_3.0+2_i386
 canaima-llaves_3.0+2_all.deb 6.9 kB, ok
 canaima-llaves_3.0+2.orig.tar.gz 19.0 kB, ok
 canaima-llaves_3.0+2.debian.tar.gz 2.5 kB, ok
 canaima-llaves_3.0+2.dsc 2.3 kB, ok
 canaima-llaves_3.0+2_i386.changes 2.5 kB, ok
jesuslara@localhost's password:
 canaima-llaves_3.0+2_all.deb                                                                                                              100% 7108     6.9KB/s   00:00
 canaima-llaves_3.0+2.orig.tar.gz                                                                                                          100%   19KB  19.0KB/s   00:00
 canaima-llaves_3.0+2.debian.tar.gz                                                                                                        100% 2531     2.5KB/s   00:00
 canaima-llaves_3.0+2.dsc                                                                                                                  100% 2323     2.3KB/s   00:00
 canaima-llaves_3.0+2_i386.changes                                                                                                         100% 2558     2.5KB/s   00:00
 ]

Con lo cual, solamente queda que sea subido el paquete con “reprepro” desde la carpeta “incoming”.

Subiendo el paquete de Incoming al repositorio

Ejecutamos:

reprepro -Vb . include roraima incoming/canaima-llaves_3.0+2_i386.changes

Y esto incluirá en la versión “roraima” el paquete .deb (y changes) al repositorio.

Creando un script que automatice los paquetes incoming

Con este script, monitorizamos el ingreso de paquetes al repositorio (carpeta incoming) y son ingresados al repositorio usando el comando reprepro.

#!/bin/sh

INCOMING=/opt/repo/repositorio/incoming
VERSION=roraima

#
# Make sure we're in the incoming/ directory
#
cd $INCOMING
cd ..

#
#  See if we found any new packages
#
found=0
for i in $INCOMING/*.changes; do
if [ -e $i ]; then
  found=`expr $found + 1`
fi
done

#
#  If we found none then exit
#
if [ "$found" -lt 1 ]; then
  exit
fi

#
#  Now import each new package that we *did* find
#
for i in $INCOMING/*.changes; do

# Import package to 'roraima' distribution.
 reprepro -Vb . include $VERSION $i

 # Delete the referenced files
 sed '1,/Files:/d' $i | sed '/BEGIN PGP SIGNATURE/,$d' \
     | while read MD SIZE SECTION PRIORITY NAME; do

    if [ -z "$NAME" ]; then
         continue
    fi

    #
    #  Delete the referenced file
    #
    if [ -f "$INCOMING/$NAME" ]; then
        rm "$INCOMING/$NAME"  || exit 1
    fi
done

# Finally delete the .changes file itself.
rm  $i
done

Y lo agregamos a un cron job, para que evalue la carpeta incoming cada 5 minutos.

  • * /5 * * * * /usr/local/bin/import-new-packages.sh

Y todo paquete ”.deb” y su archivo de cambios ”.changes” será incorporado al repositorio.

Generación de los Medios de Instalación

Generación de la iso con simple-cdd

mkdir -p canaima/primera-base

cd canaima/primera-base

mkdir profiles/

vim profiles/primera-base.packages

* En el archivo “primera-base.packages” se nombran todos los paquetes de Canaima base definidos en la sección correspondiente (más adelante).

simple-cdd --dist squeeze --do-mirror -p primera-base --locale "es_VE" --keyboard "es" --debian-mirror "http://192.168.1.3/debian/" --security-mirror "http://192.168.1.3/debian-security/"

Este comando construirá una iso basado en el perfil (profile) “primera-base” traídos del repositorio definido (que por razones óptimas debe ser un repositorio local)

Generación de la ISO con Canaima Semilla

Canaima Semilla facilita la creación de Sabores Canaima mediante el establecimiento de reglas o perfiles que definen los componentes que integran el sabor. Un perfil está compuesto de varios archivos con nombres específicos colocados dentro de una carpeta que lleve por nombre el nombre del sabor en minúsculas.

Para el sabor Canaima Primera Base, se configuró de la siguiente forma, según está descrito en el Blog Hunting Bears:

sabor.conf

PUBLICADO_POR="Canaima GNU/Linux; http://canaima.softwarelibre.gob.ve/; desarrolladores@canaima.softwarelibre.gob.ve"
SABOR_DIST="squeeze"
APLICACION="Canaima GNU/Linux"
MIRROR_DEBIAN="http://192.168.1.3/debian"
COMP_MIRROR_DEBIAN="main contrib non-free"
SABOR_PAQUETES="canaima-base"

canaima.binary y canaima.chroot

deb http://repositorio.canaima.softwarelibre.gob.ve/ roraima usuarios
deb http://repositorio.canaima.softwarelibre.gob.ve/ desarrollo usuarios
deb http://seguridad.canaima.softwarelibre.gob.ve/ seguridad usuarios

Configuración GTK para el instalador gtkrc_semilla

Archivo de presembrado para el instalador preseed_instalador

Banner para el instalador

Banner del Menú de inicio

Finalmente, el comando para construir la ISO fué:

canaima-semilla construir --medio="iso" --arquitectura="i386" --sabor="primera-base"

Definición de la Lista de Paquetes

Empezaremos definiendo cuales son los paquetes que Debian marca como “Requeridos” y “Críticos”.

  • Los paquetes requeridos son necesarios para el correcto funcionamiento del sistema. Esto incluye todas las herramientas necesarias para reparar defectos del sistema. No se deben eliminar estos paquetes o su sistema puede volverse totalmente inestable y probablemente ni siquiera será capaz de usar dpkg para volver a poner las cosas en su sitio. Sistemas con sólo los paquetes requeridos probablemente no son utilizables, pero tienen la suficiente funcionalidad para permitir al administrador del sistema arrancarlo e instalar más programas.
  • Los paquetes importantes están presentes en cualquier sistema parecido a Unix. Aquí se encuentran los paquetes sin los que el sistema no funcionará correctamente. Esto NO incluye Emacs, X11, TeX o cualquier otra aplicación grande. Estos paquetes sólo constituyen la infraestructura base.
  • Los paquetes estándar son los típicos en cualquier sistema Linux, incluyendo un sistema en modo carácter razonablemente pequeño, aunque no muy limitado.
  • Los paquetes opcionales incluyen todos los que razonablemente se desearía instalar a no ser que no se sepa lo que son o exijan requisitos especiales. Esto incluye X11, una distribución completa de TeX, y montones de aplicaciones.
  • Los paquetes extra tienen conflictos con otros de mayor prioridad, o es sólo probable que se usen si ya se sabe lo que son, o tienen requisitos especiales.

Si haces una instalación estándar de Debian, todos los paquetes de prioridad estándar serán instalados en su sistema.

Adicionalmente, algunos paquetes son marcados como “Esenciales” porque son absolutamente necesarios para el correcto funcionamiento del sistema. El sistema de gestión de paquetes se negará a removerlos.

En ese sentido, y teniendo en cuenta que el repositorio de Canaima debe ser reestructurado de acuerdo a las nuevas secciones:

  • canaima
  • contribuciones
  • extra
  • privativo

En donde los paquetes generados y adaptados para canaima estarán en “canaima”, las dependencias de Debian para los paquetes de canaima en “contribuciones”, los demás paquetes provenientes de otras distribuciones en “extra” y los privativos en “no-libre”.

Entonces, la idea general es que generemos una base mínima con los paquetes “requeridos” de Debian, sustituídos por los de Canaima, más una serie de paquetes que consideremos necesarios.

LISTA DE PAQUETES DEFINIDA

Agregando tareas a TASKSEL

En el directorio ”/usr/share/tasksel/” se agregan archivos (puede ser un solo archivo con varias tareas) en donde se especifiquen las tareas que se desean agregar bajo el siguiente formato:

Task: nombre-de-la-tarea
Section: seccion
Description: Nombre de la Tarea que saldrá como título
 Descripción de la tarea, para que se especifique qué hace desde la línea de comandos de TASKSEL
Key:
 paquete-requerido
Packages: list
 paquete01
 paquete02
 paquete03
 paquete04

Un ejemplo funcional pudiese ser el siguiente, para instalar un sistema de escritorio GNOME:

Task: desktop-base-gnome
Section: server
Description: Escritorio Base (Gnome)
 Instala los paquetes necesarios para un escritorio base funcional (GNOME)
Key:
 desktop-base
Packages: list
 xserver-xorg-core
 xorg
 gdm
 gnome

La sintaxis y la identación (espacios al principio de las líneas) son importantes para no generar errores.

Como meter taskel en el Debian Installer puede ser leído en esta lista de discusión: http://www.mail-archive.com/debian-live@lists.debian.org/msg06964.html

Resultados

  • Iso Instalable de Canaima GNU/Linux en su base única más mínima: AGREGAR
  • Mirror redistribuido con las secciones especificadas (canaima, contribuciones, extras y privativo)

Conclusiones

Recomendaciones

Estadísticas de la Mesa

  • Duración de la Mesa: 10 horas
  • Número de participantes: 4

___

Canaima Base (cotinuación en la Mini Cayapa Mérida)

Infraestructura de construcción

Construcción de canaima-base

canaima_base.txt · Última modificación: 2011/09/09 18:26 por linda_martinez
 
ODT Export Exportar PDF
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia: CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki