SumaPack (by Diego Saravia, dsa@unsa.edu.ar)

Software para construir e instalar paquetes de software de varios tipos en diferentes sistemas (cross-packaging).

Enero del 2010, en desarrollo a retazos desde el 2002 con el desarrollo del ututo Router y la segunda version del Ututo, y en el 2005 con el manifiesto antidistros.

http://www.sumapack.org

AGPLv3+

SOFTWARE EN DESARROLLO, todavía no se han liberado ni siquiera versiones alfa. Usar con precaución y sin garantía.

Criticas, comentarios, colaboraciones, etc. a: diego.saravia@gmail.com

En el comienzo: Toda la Tierra tenía una misma lengua y usaba las mismas palabras. Los hombres en su emigración hacia oriente hallaron una llanura en la región de Senaar y se establecieron allí. Y se dijeron unos a otros: «Hagamos ladrillos y cozámoslos al fuego». Se sirvieron de los ladrillos en lugar de piedras y de betún en lugar de argamasa. Luego dijeron: «Edifiquemos una ciudad y una torre cuya cúspide llegue hasta el cielo. Hagámosnos así famosos y no estemos más dispersos sobre la faz de la Tierra». Mas Yahveh descendió para ver la ciudad y la torre que los hombres estaban levantando y dijo: «He aquí que todos forman un solo pueblo y todos hablan una misma lengua, siendo este el principio de sus empresas. Nada les impedirá que lleven a cabo todo lo que se propongan. Pues bien, descendamos y allí mismo confundamos su lenguaje de modo que no se entiendan los unos con los otros». Así, Yahveh los dispersó de allí sobre toda la faz de la Tierra y cesaron en la construcción de la ciudad. Por ello se la llamó Babel, porque allí confundió Yahveh la lengua de todos los habitantes de la Tierra y los dispersó por toda la superficie. La Biblia, Génesis, Capítulo 11, primer versículo. http://es.wikipedia.org/wiki/Torre_de_Babel

Intentos de solución: Bajo el reinado del joven, que recibió la soberanía de su padre, señor de las insignias reales, cubierto de gloria, el instaurador del orden en Egipto, piadoso hacia los dioses, superior a sus enemigos, que ha restablecido la vida de los hombres, Señor de la Fiesta de los Treinta Años, igual que Hefaistos el Grande, un rey como el Sol, gran rey sobre el Alto y el Bajo País, descendiente de los dioses Filopáteres, a quien Hefaistos ha dado aprobación, a quien el Sol le ha dado la victoria, la imagen viva de Zeus, hijo del Sol, Ptolomeo, viviendo por siempre, amado de Ptah. En el año noveno, cuando Aetos, hijo de Aetos, era sacerdote de Alejandro y de los dioses Soteres, de los dioses Adelfas, y de los dioses Evergetes, y de los dioses Filopáteres, y del dios Epífanes Eucharistos, siendo Pyrrha, hija de Filinos, athlófora de Berenice Evergetes; siendo Aria, hija de Diógenes, canéfora de Arsínoe Filadelfo; siendo Irene, hija de Ptolomeo, sacerdotisa de Arsínoe Filopátor, en el (día) cuarto del mes Xandikos (o el 18 de Mejir de los egipcios). http://www.jimloy.com/egypt/rosetta0.gif http://www.jimloy.com/egypt/rosetta.htm http://www.britishmuseum.org/research/search_the_collection_database/search_object_image.aspx?objectId=117631&partId=1&searchText=rosetta+stone&fromADBC=ad&toADBC=ad&orig=%2fresearch%2fsearch_the_collection_database.aspx&numPages=10&currentPage=1&asset_id=16456]]

Segundo intento: "Tres Anillos para los Reyes Elfos bajo el cielo. Siete para los Señores Enanos en palacios de piedra. Nueve para los Hombres Mortales condenados a morir. Uno para el Señor Oscuro, sobre el trono oscuro en la Tierra de Mordor donde se extienden las Sombras. Un Anillo para gobernarlos a todos. Un Anillo para encontrarlos, un Anillo para atraerlos a todos y atarlos en las tinieblas en la Tierra de Mordor donde se extienden las Sombras." El Señor de los Anillos, JRR Tolkien

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

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

Introducción

Definición

SumaPack es (quiere ser):

- un meta / summa / super instalador de paquetes que abstrae las diferencias en comandos y nombres de paquetes.

- una extension a las autotools (autoconf, automake, libtoolize, etc) para:

* generar paqueteria binaria compatible con los manejadores de paquetes instalados en diferentes máquinas.

* instalar a traves de los manejadores de paquetes cuando existan.

* instalar automaticamente dependencias y requisitos previos para la compilación.

* facilitar el uso de muse y LaTeX en los paquetes.

- una Rosetta de aplicaciones y paquetería en sistemas gnu/linux/bsd, base para construir la Babel del software libre y forjar el anillo para atar a todas las distros al señor oscuro (Si Yahveh nos traiciono destruyendo Babel y creando decenas de sistemas de paquetes no interoperables y añadiendo un problema al ya de por si azaroso proyecto de crear paquetes binarios, debemos apoyar al otro señor, sea oscuro o sea un lucero).

- (muy a futuro y en potencial) manejador de jaulas de compilacion en entornos de cross-compiling (CT-NG), generador de repositorios y anti-distros.

Objeto

Abstraer al usuario, y fundamentalmente al desarrollador, del problema de las diferentes distribuciones, y de sus diferentes comandos, esquemas y nombres de paquetes, para resolver las dependencias e instalaciones. Facilitar la compilación, empaquetamiento, instalacion, uso y distribución de software desde sus paquetes fuentes ORIGINALES sin interferir negativamente con la adminsitración de cada sistema. Facilitar la generacion de interfaces de usuario o de otros programas, que funcionen en muchos sistemas. Aportar a una mejor comprensión de las acciones y complejidades de cada sistema de administración de paquetes y las virtudes, potenciales y defectos de unos con respecto a otros. Apoyar los trabajos para simbolizar y analizar simbólicamente y formalmente el problema de las dependecias de paquetes binarios y fuentes y aportar a planteos de calidad en sistemas gnu/linux.

Cumplir este objetivo implica limitar el poder de las distros, empaquetadores y sus mantenedores y otros intermediarios entre usuarios y desarrolladores, aumentando la capacidad operativa de los desarrolladores y usuarios (prosumidores) de software. Eventualmente el uso y generalizacion de estos sistemas llevaria a hacer totalmente ortogonal el uso de un sistema cualquiera con cualquier sistema de paqueteria, y eliminaria en gran medida la necesidad de la existencia de empaquetadores.

Es mas un concepto que software. Sumapack podria desaparecer o verse reducido a una minima expresión si su uso se generalizase. Para esto cada paquete original podría distribuir algunos archivos, y todas los repositorios poner los nombres originales a cada paquete.

Esto es un paso en la solucion del problema planteado con el manifiesto anti-distros: http://docs.hipatia.info/distros/

Todavia hay mucho que avanzar y que pensar.

NOTA: si las fuentes ORIGINALES son el ambito donde se aplica la máxima de "muchos ojos dan calidad y seguridad", ese esencial concentrar alli, la generación de derivados y evitar pasos intermedios para la incorporacion de puertas traseras y otros problemas.

Aspectos Centrales

Hoja de acciones, comandos y resultados: http://www.sumapack.org/sumapack.svg en formato png:

Los paquetes fuentes originales son faciles de usar con sumapack, y la inexistencia de sumapack en un sistema no bloquea las funciones comunes.

En particular los .spec .lsm control .ebuild se generan desde un archivo comun. Autogenera las listas de archivos y las dependencias de la info del proyecto fuente, hasta donde es posible. Se debe trabajar con una rosetta especifica para esto. Así se facilita la generacion de binarios en cada sitema.

Puede funcionar con crosstools y con jaulas de compilación específicas.

Util para pruebas y desarrollo, eventualemente para hacer las mismas distros con diferentes sistemas de paqueteria, haciendo ortogonal este tema. Asi ayuda a los fabricantes de distros y repositorios. Que estos paquetes sean usables en otros sistemas ya no depende de estas herramientas, sino de las versiones de librerias y dependencias reales.

Genera los paquetes desde cada fuente, no es un sistema externo el que controla los make de cada proyecto fuente, sino que el Makefile del proyecto hace todo. En todo caso los archivos rules, y partes del spec y ebuild que pretenden reemplazar/usar al make de cada proyecto se generan, pero no para uso por sumapack.

Puede usarse un software externo para otros fines como el uso de USE por emerge, o herramientas de cross compiling o sistemas de generacion de repositorios completos. Este no es el fin (al menos por ahora) de sumapack.

- H) Provee software para facilitar el uso de Muse y LaTeX en la realizacion de documentos

- I) Tiene un generador de un bootstrap para bajar las dependencias previas el mismo que podria generalizarse para hacer paquetes autoinstalables en cualquier distro, con un lugar previsto para bajar a mano las dependencias, si no anda interne o wget.

Guía de uso preliminar

sp

Este enlace amplia sobre sp, y babel.

http://www.sumapack.org/RosettayBabel.html

sp -i tarea1 tarea2 ... tarean proyecto1 ..proyecton paquete1 ..paqueten

donde tareas, proyectos y paquetes estan en rosetta.dat (/usr/local/share/sumapack/rosetta.dat) proveniente de data/rosetta.dat

tarea es el nombre generico de un confunto de proyectos que realizan una tarea especifica, por ejemplo cc es compilador de c

hay varios proyectos que desarrollan compiladores, como gcc, bcc, etc

cada uno de estos proyectos son distribuidos en cada sistema mediante uno o varios paquetes

en sumapack, tareas y proyectos son genericos, iguales para todas las distros y estan definidos en rosetta.dat y eventualemente en una rosetta.local que cambia definiciones segun la politica que se defina.

existe posibilidad de definir proyectos por defecto para cada tarea, o de instalar mas de un proyecto para cada una, si no son contradictorios

con esto tambien se puede instrumentar los paquetes genericos de algunos sistemas

rosetta y babel

sp comando esta construido internamente con dos comandos: rosetta que a partir de las tareas y proyectos produce nombres de paquetes y babel que instala los paquetes segun el sistema, pudiendo partir de repositorioso paquetes locales; binarios o fuentes

./lacks

rosetta ademas de la linea de comando lee ./lacks como fuente para tomar sus datos. es generado al hacer ./configure

make prepare,

llama a sp e instala todo lo que lacks le indica

Packlets

scripts que usa babel para interactuar con cada sistema

TEST_PACK

TEST_PACKS([proyecto1 proyecto2 ])

macro para añadir al configure.ac de un proyecto para testear, e instalar automaticamente las dependencias junto a otros macros que dan datos para cada paquete, y leer variabeles importantes

genera un archivo ./lacks con todos los paquetes necesarios no isntalados, que es leido por rosetta y otro ./needs para referencia de todos los paquetes necesarios

Utilidades para el ChangeLog

genera changelog del svn e info para spec y demas

infosis, detectasistema y detectahttpd

scripts que proveen info del sistema

Inclusiones en la Makefiles para generar distros binarias

para incluir en makefile.am que generan para cada paqute fuente binarios

todas las makefiles en orden con la filosofia del las autotools

producen binarios para una arquitectura y sistema de acuerdo al nombre canonico "cpu-manufacturer-kernel-operating_system" vigente, uno puede proveerle uno o lo deduce del sistema. Manufacturer es la distro y su version, Las distros en funcion de sus "repositorios". Diferentes repositorios son diferentes distros.

Esto funciona en cualquier sistema, aunque si el sistema donde se genera no es el adecuado, puede haber problemas, no estamos en condiciones ahora de predecir si habra errores o no. Lo ideal es producir en el mismo. (librerias, crosscompiling, etc)

make binpackages

genera todos los formatos: make rpm, deb, txz, tbz, tgz

make bootstrap

llama a sumapackbootstrap y genera un paquete bs.tar.gz, que al abrirlo contiene ejecutables autoportados que instalan lo necesario y a sumapack

Inclusiones en las Makefiles para generar documentación

MAKEFILES para generar documentacion muse latex

emacs

crea archivo para añadir al .emacs util para muse, desde scripts/emacs.in, pasar a otro lado

publishmuse

para publicar informacion escrita en muse en numerosos formatos: html, pdf, latex, etx

pkginfo

produce meta datos para rpm.spec .ebuild, no-rules etc a partir de $PACKAGE.summa

macros m4

permiten identificar si esta instalado el paquete, setean variables necesario para usarlo y generan lacks y needs

Archivos para otros proyectos

hay que generar una base universal de estos, se puede hacer a mano o automaticamente de otros repos.

$PACKAGE.summa

macros .m4

entrada en rosetta.dat

Descargas

Este software es absolutamente experimental, en su generacion he aprendido a usar muchas herramientas, asi que diferentes areas de cada programa reflejan diferentes niveles de conocimiento, todavia no esta completo, solo ha sido probado en un paquete y puede cambiar mucho en poco tiempo.

Toda colaboracion bienvenida

Por ahora solo disponible a traves de subversion

Fuentes via subversion

Sumapack:

https://www.inenco.net/repos/dsatex/sumapack

Documentos de Sumapack (este doc)

https://www.inenco.net/repos/dsatex/sumapack-doc

Prueba de documentacion Muse

https://www.inenco.net/repos/dsatex/sceptre-inenco-doc/trunk

Prueba de un paquete parcialmente sumapackizado (no actualizado)

https://www.inenco.net/repos/loli/sceptre-inenco/trunk

en todo caso instale primero sumapack

svn co https://www.inenco.net/repos/dsatex/sumapack
cd sumapack
autoreconf -i
./configure
make
sudo make install

algo similar para los otros

Descargas de paqueteria

Estos paquetes no estan probados, todavía falta mucho trabajo, hay que diferenciar rpms por distribucion, etc..

Puede autoinstalrlo con este script

http://www.sumapack.org/download/install-sp.sh

o bajar este paquete

http://www.sumapack.org/download/sumapack-last-bootstrap.tar.gz

una vez bajado y abierto con:

  tar -zxvf sumapack-last-bootstrap.tar.gz;
  cd spbs

para descargar las fuentes, ejecute:

 ./sp-install

o para bajar desde el svn:

 ./sp-installsvn

Resto de los paquetes:

http://www.sumapack.org/download

Referencias

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