SummaPack
(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.
Apunta a Ututo: 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¤tPage=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:
- A) Funciona en muchos sistemas en forma similar
- B) El comando sumapack presenta una interfaz comun para algunas de las tareas (install) de apt-get; zypper; emerge; ututo-get; urpmi; yum; installpkg; wget,./configure, make, sudo make install; package
- C) En cada sistema usa el comando apropiado para el sistema de paquetes del mismo Si no encuentra un sistema o no encuentra un paquete apropiado, usa el sistema generico desde las fuentes. Eventualmente provee de scripts específicos para instalar a nivel de cada sistema paquetes complejos. Si instala desde las fuentes primero empaqueta, si puede.
- D) Se usa un sistema comun de nombres para los proyectos de software libre, independientemente de cada repositorio. Se provee un archivo "rosetta" que acumula informacion sobre nombres de paquetes en diferentes repositorios. Se da un nombre por funcion, esta funcion puede instalar uno o mas proyectos, y estos proyectos pueden contener uno o mas paquetes diferentes en cada repositorio. Asi se provee y generalizan conceptos como paquetes virtuales, slots varios, etc.. Existe la posibilidad de poner un archivo rosetta local en cada uso, que se superpone sobre el genérico , para definir politicas particulares.
- E) Permite usar y trabajar desde sistemas con autoconf/automake en forma congruente con el sistema de paqueteria de cada sistema. Así facilita la tarea del usuario desarrollador. Y la instalacion de paquetes desde las fuentes.
Los paquetes fuentes originales son faciles de usar con sumapack, y la inexistencia de sumapack en un sistema no bloquea las funciones comunes.
- F) Se proveen macros m4 genericos y especificos para cada paquete. Con los mismos se puede instruir al configure.ac de un paquete fuente, para que averigue si los paquetes requeridos para su compilacion estan instalados. Esta informacions es volcada a un archivo "lacks". De alli puede ser tomada por un script que instala estos paquetes. Este script puede ser ejectuado desde un objetivo "prepare" del Makefile.am
- G) Genera en cualquier sistema paquetes deb, txz, rpm, ebuild, etc.
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.