Rosetta, Babel y Packlets.

Esta página es parte del proyecto http://www.sumapack.org

A los efectos de poder usar estos paquetes y sus dependencias en todas las distros y ayudar a la prueba y desarrollo de un software en cualquier distro, se proveen herramientas de instalacion que interoperan con todas las herramientas particulares, y un esquema de traduccion de nombres de paquetes entre repositorios.

Ambos comandos trabajan juntos. Rosetta, para cada sistema, habitualmente instalado mediante una distribución, identifica el nombre solicitado, o función a instalar, con un proyecto en particular. El nombre puede estar asociado en rosetta.dat con varios proyectos de software que brindan esa función. Ante cada función puede instalar uno o más proyectos alternativos o complementarios, permitiendo definir en cada caso el comportamiento y proveyendo uno por defecto. Cada proyecto para cada distribución ofrece uno o más paquetes para su instalación. Hay tres niveles involucrados: función, proyecto y paquete. Para cada función y cada “distro” Rosetta propone diferentes paquetes para su instalación. Babel toma estos paquetes y los instala.

Conceptos de Rosetta y Babel en SumaPack

Dada la situación antes descripta SumaPack pretende ayudar en un proceso de homogeneizacion de la paquetería y herramientas.

Con babel SumaPack aporta comandos tipo "wrappers" que traducen las diferencias entre las herramientas y con rosetta una infraestructura para unificar y traducir los nombres de los paquetes en distintos repos.

Esto facilita a los usuarios el moverse entre diferentes distribuciones y a los desarrolladores facilitar la construccion de sus paquetes fuentes y hacer instaladores graficos que funcionen en todos lados, entre otras ventajas.

Asi se provee:

Se puede pensar en un microlenguaje de administración de paquetes formado por frases donde la primera palabra es una accion y le siguen varios objetos. Segun la accion y el tipo de objeto se ejecuta el packlet específico para cada herramienta con el comando interno de packlet que corresponda. los packlets segun la siguiente tabla.

Babel clasifica los objetos segun su tipo y los agrupa segun el packlet que debera tramitarlos.

El comando babel toma como argumentos, una orden, un posible argumento opcional y luego un argumento por cada "elemento" sobre el que operar y termina ejecutando un packlet o eventualmente generando un comando para hacer bootstraping del propio babel.

Interaccion entre Acciones, Objetos y Packlets

Tabla que muestra para cada accion de babel y tipo de objeto (cuanfo es un paquete de un repo) el comando interno del packlet que se ejecuta. Además se indica que tipo de informacion modifica el comando en el sistema.

Clave de la tabla

. Objeto: NAME, PACKAGES, ...
Accion: install, remove ... Comando interno de Packlet que corresponde.
. Que modifica

Tabla

. NAMES PACKAGES PACKAGES REPO WORLD SYSTEM ALL CACHE
install . . install addrepo update distupdate . refresh
remove . . remove delrepo . . . .
clean . . clean . depclean . . clean
fix . . fix . fix . . .
search search . . . . . . .
info . info . . stats stats stats stats
MODIFICA No M. P. I. No M. P. I. M. F.S. M. Conf. M. F.S. M. F.S. M. F.S. M. Cache

F.S.: file system, archivos de la computadora provenientes de los paquetes

Conf.: Configuracion del sistema empaquetador

No M. P.I.: no modifica, produce información.

Se ejecutan distintos packlets segun la distribucion y el tipo de objeto, Todos los packlets deben tener similares comandos que cumplan la funcion dada.

No se instrumento todavía el comando query que suele ejecutar consultas sofisticadas al cache o base de datos.

Ademas los packlets tienen la accion special, que sirve para ejecutar comandos particulares no planteados en Babel.

Notas: Para actualizar el sistema pero no los paquetes relativos a la version, es "install WORLD", para cambiar todo hasta la version es "install SYSTEM", ejecutar "install ALL" debiera instalar todo el repositorio en la maquina, no se instrumento todavia. Para actualizar o instalar desde cero, el cache es "install CACHE". Install REPO es traducido como addrepo REPO.

El comando de packlet update, en debian suele conocerce como upgrade, el refresh es conocido en debian como update.

No siempre se logra que todas las herramientas hagan todas las funciones o exactamente lo mismo.

Los Objetos

Cada uno de los objetos comienza con un codigo de objeto que identifica el tipo y como esta empaquetado en caso de ser paquete, luego sigue la ubicación de donde se adquiere el mismo y su identificación.

Paquetes, funciones y proyectos.

Todos los códigos anteriors desde EBUILD hasta PAQ corresponden a paquetes,(PACKAGE), que son elementos en listas de paquetes (PACKAGES-LIST), y pueden especificar los paquetes de muchas formas segun su código.

En Rosetta cada funcion del sistema se la identifica con un nombre, que puede estar asociado en rosetta.dat con varios proyectos de software que brindan esa funcion. El sistema ante cada funcion puede instalar uno o mas proyectos alternativos o complementarios, permitiendo definir en cada caso el comportamiento y proveyendo uno por defecto. Cada proyecto para cada "distribucion" ofrece uno o mas paquetes para su instalacion. Entonces hay tres niveles involucrados: Funcion, Proyecto y Paquete. Para cada Funcion y cada Distro rosetta propone diferentes paquetes para su instalacion. Babel toma estos paquetes y los instalan.

Documento Específico sobre Rosetta (falta)

Conjuntos de Repositorios.

Un conjunto de repositorios contiene paquetes binarios (y sus versiones

fuentes) compilados en forma coherente para que puedan interoperar. Los repositorios pueden distribuirse por redes como Internet o por medios físicos.

Existen varios conjuntos, en principio uno por cada distribución.

Se accede a ellos con diferentes herramientas que instalan en cada sistema los paquetes requeridos y almacenan localmente informacion en diferentes bases de datos. Existen herramientas de diverso nivel, algunas garantizan la instalacion de paquetes y los paquetes de los cuales dependen, otras no. En muchos sisemas existe una herramienta de bajo nivel y otra de alto nivel que garantiza las dependencias. SumaPack intenta operar con las herramientas de mayor nivel de cada sistema. Algunas herramientas como smart intentan operar con diversos repositorios.

Algunos repos existentes:

Wrappers: Packlet

Scripts que usa babel para interactuar con cada sistema

Cada uno de estas herramientas suele permitir, al usuario o administrador del sistema, realizar diversas operaciones con sus paquetes: adquirirlos, instalarlos, removerlos, buscarlos, conectarse con un repositorio, etc no todas las opciones funcionan en todos los sistemas no en todas hacen exactamente lo mismo

Disponemos de packlets en diferente avance de desarrollo para:

Algunos de ellos admiten opciones y pueden operar sobre distintos argumentos

Acciones de babel

Install PACKAGE-LIST PACKAGE-SETS REPO-LIST CACHE

Instala el objetivo, sea paquete, conjunto de paquetes o repositorio.

Este comportamiento es optimo para interactuar con rosetta y rosetta.dat, ya que rosetta describe una lista de acciones necesarias para instalar un paquete, incluida la configuracion de nuevos repositorios.

En el caso de un paquete de los repositorios configurados lo instala con sus dependencias y lo lleva a su ultima version (upgrade).

Con opciones se le puede indicar en esta accion:

En el caso de un repositorio lo instala y reconstruye el cache acorde con el nuevo repositorio.

En el caso de un paquete fuente, sea binario, repositorio subversion, o cpan, lo instala, pudiendo optarse, por solo bajarlo, desempaquetarlo, configurarlo, construirlo, instalarlo en forma directa o mediante la recreacion de paqueteria.

Las opciones se incorporan mediante —opts OPCION

OPCION Consiste en dos palabras separadas por un _

La primera consta de 5 letras, no importa que vaya en cada una, en tanto sea diferente de 0, otro caracter activa la opcion. Los cinco caracteres corresponden a:

La segunda puede ser una de las siguientes:

SDUFB_dwld|tar|configure|all|package|srcinstall|install

Remove PACKAGE-LIST REPO

Elimina los archivos que un paquete incorpora en el sistema o elimina un repositorio de la configuracion de la herramienta de paqueteria.

clean PACKAGE-LIST PACKAGE-SETS CACHE

Limpia para cada paquete (clean) o conjunto de paquetes (depclean en WORLD) o el cache (clean,autoclean) las dependencias no usadas

En los cache puede sacar todo o solo lo que no se usa

Puede mostrar los paquetes a ser "limpiados" con una opcion (check)

fix PACKAGE-LIST PACKAGE-SETS

Corrije problemas en los paquetes o conjuntos indicados, generalmente problemas de dependencias.

search NAME

Búsqueda de paquetes en su nombre, o su descripcion y otra informacion.

Si la primera palabra de la opcion unica es "all", busca en toda la info disponible, si no solo en su nombre.

info PACKAGE-LIST PACKAGE-SETS CACHE

Muestra informacion relativa a cada paquete contenido en la lista, en los conjuntos seleccionados, o en el cache.

special NON-TRANSLATED-COMMAND

Para actuar directamente sobre la herramienta subyacente y pasarle un comando nativo no traducido.

Referencias

Manifiesto Anti Distros. Diego Saravia http://docs.hipatia.info/distros/

How package management changed everything. Ian Murdock. http://ianmurdock.com/solaris/how-package-management-changed-everything/

http://en.opensuse.org/Software_Management_Command_Line_Comparison http://wiki.archlinux.org/index.php/Pacman_Rosetta

http://www.packagekit.org/index.html http://en.wikipedia.org/wiki/PackageKit

http://ututo.org/manual/index.php/Par%C3%A1metros_de_Uget http://ututo.org/freewiki/index.php/UTUTO-get_Serie_1

http://www.rpm.org

http://en.wikipedia.org/wiki/Smart_Package_Manager http://www.labix.org/smart/ http://www.labix.org/smart/faq http://labix.org/smart/user-guide/Command%20Line%20Interface

http://packages.debian.org/etch/feta http://www.togaware.com/linux/survivor/Wajig_Packages.html http://wiki.xtronics.com/index.php/Wajig http://en.wikipedia.org/wiki/Advanced_Packaging_Tool https://bugs.launchpad.net/ubuntu/+source/apt-setup http://cpansearch.perl.org/src/IANK/Config-Apt-Sources-0.10/lib/Config/Apt/SourceEntry.pm http://mirrorer.alioth.debian.org/reprepro.1.html

http://en.opensuse.org/Zypper/Usage/11.2 http://lilypond.org/blog/janneke/openSUSE-HOWTO#347624

http://www.gentoo.org/doc/es/handbook/handbook-x86.xml?part=2&chap=1 http://en.wikipedia.org/wiki/Portage_%28software%29

http://www.slackware.cl/docs/guia/arreglo/cap_4_8.html http://en.wikipedia.org/wiki/Pkgsrc

http://www.archlinux.org/pacman/pacman.8.html http://search.cpan.org/~juster/ALPM-0.03/lib/ALPM.pod

http://es.wikipedia.org/wiki/Urpmi http://emerde.freaknet.org/changelog.php

http://www.rpath.com/corp/solutions

http://www.gnu.org/software/autoconf/manual/autoconf.html