Para los que no lo han visto. Tiene buenas sugerencias saludos Lesman
21 de agosto 2005 Versión 0.2 Primera versión: 10 de marzo del 2005 Archivo Postscript: distros.ps, archivo PDF: distros.pdf, fuentes: distros.tar.bz2. Diego Saravia http://www.ututo.org/dsa Con aportes de las comunidades de Conexion Social http://www.migrandovenezuela.org <http://www.migrandovenezuela.org/> y Solar: http://www.solar.org.ar <http://www.solar.org.ar/> mailto:dsa en unsa.edu.ar. <http://solve.net.ve/cgi-bin/mailman/listinfo/softwarelibre> Inenco; Dpto. Física; Fac. Cs. Exactas; Universidad Nacional de Salta. Hipatia, Conexion Social y Solar 1 Introducción Las distros son al sotware libre como los cuadros a la pintura y los temas de 5 minutos a la música. Una forma o formato de distribución para convertirlo en producto y capitalizarlo. Lo que ocasiona la aparición de burocracias, especialmente las comerciales, con metas innecesarias salvo para ellas mismos, y que como toda burocracia busca formas de hacerse imprescindible e impone normas que retrasan o ponen la innovacion real en los márgenes del sistema. El problema de que distro usar es lo primero que se plantea una persona u organizacion que se acerca al movimiento. Un problema que suele ocasionar luchas comerciales y discusiones religiosas. Un problema que crea empresas de servicios que solo son aptas para trabajar con una distro. Y es un problema artificial que solo aparece en aquellas personas que se acercan al movimiento, pero no que debiera ser un problema para el técnico competente. Los problemas de elección reales e importantes son las otras cientos de opciones a tomar, como que escritorio usar, que sistema de archivos en red, que paquete de oficina, etc, etc.. Una vez decididas, usar una distro u otra no tiene la más mínima relevancia, tanta como elegir de donde instalar los paquetes. Discutir que distro usar es entrar en el juego perverso de las empresas comerciales que asocian su distro con dinero y servicios. Debemos insistir en que la distro es lo de menos, lo que importa es que la gente conozca los conceptos y que se pueda interoperar de la mejor forma. 2 Definiciones Que es una distro: Un repositorio (en cd, diskete o internet) de un conjunto de paquetes conteniendo ejecutables y archivos de configuración. Así pues el trabajo que caracteriza a un distro es la compilación de paquetes propios, la forma de empaquetarlos y como subdivide el software en paquetes. Que es una subdistro: Otro repositorio que toma los paquetes del repositorio madre y altera algunos de ellos, muchas solamente el fondo de pantalla, otras scripts, menues, etc.. ¿Es este trabajo malo? No, por supuesto que no. Es muy util tener repositorios (distros) particulares, específicas para cada empresa o adaptadas a los médicos o a las escuelas. Debemos facilitar este trabajo y que cualquiera puede hacerse su ``distro''. Pero esto no tiene porque generar ramas incompatibles de software. Me parece genial que cada empresa usuaria, cada organización, cada lug, cada persona, tenga su distro, con su menu, su selección de paquetes y sus fondos de pantalla. Ese no es el problema. Que son los generadores de distros:Mecanismos, procedimientos, protocolos, normas (como las guidelines de Debian) o software para generar distros, como linux from scratch o gentoo y hasta cierto punto metadistros, o el paquete apt-get source de debian. Software limitado a una distro:Como parte del mecanismo perverso mencionado algunos han confeccionado software con la idea de que solo funcione en una distro. Por ejemplo yast. O el conjunto de scripts que incia una computadora en muchas distros. O la forma de hacer un discos compactos ``vivos'', o el sistema apt-get en Debian. Por suerte ya hay gente intentando que yast funcione en Debian o Ututo por ejemplo. Pero hay que entender que este software no es mas que paquetes. Artificialmente limitado, pero un paquete mas al fin. Se suele asociar una distro con estos paquetes, pero esto es un error. Un error mas inducido por este modelo. Que son los paquetes y sus dependenciasUn conjunto de ejecutables y archivos de configuracion. Pero lo intersante es que la division del software necesario para una computadora en paquetes trae el fenomeno de la dependencia. Entonces no es importante hablar solo del paquete sino de la forma en que se subdivide el software y se arma la red de dependencias. La forma de dividir los paquetes es tambien caracteristica de las distros. 3 Discusión y propuesta Cual es el problema con las distros? Que favorece la aparición de un trabajo adicional e independiente: ``el empaquetamiento'', que alienta a un conjunto de desarrolladores a centrar su esfuerzo en el concepto de distro en vez de concentrarse en mejorar cada paquete. Con lo cual se desperdicia y se multiplica el trabajo sin mayor diversidad real. ¿Esta mal que empaquetar sea importante? No, es un trabajo muy importante. El problema es que se use y se enfoque en separar a la gente por distros. Es importante que se enfoque en cada paquete. Me gustaria hablar de los empaquetadores del Open Office, y no de los empaquetadores Debian o SUSe. La solución ¿Es la solución elegir una distro y abandonar las otras? No, la solucion es salir del modelo de distros. Sacar el foco de alli y concentrarse en los paquetes. Pensemos la forma de disolver el concepto de distros y hacer mas facil la vida a la gente. Hacer que el empaquetamiento sea un trabajo vinculado estrechamente con el desarrollo del software que empaqueta. Concetrarse en mejorar los miles de paquetes originales para que interoperen mejor entre si y se instalen directamente desde cada uno de sus sitios. Para que tener 1000 personas trabajando en paquetes debian, que directametne mejoren los makefiles de los originales, Asi devuelven al proyecto lo que usan, me parece mas racional y funcional al modelo de soft libre. Lo mismo para las otras distros. Los Makefiles de cada proyecto puede producir los paquetes necesarios para que se usen, tales como deb, rpm, tgz, sh o incluso paquetes completos o que separen documentacion, ejecutables y desarrollo. Armar repositorios que los agrupen y discos compactos que distribuyan esos repositorios, originados en el sitio base de cada proyecto. Hacer que la diferencia entre un paquete deb y un rpm sea solo de formato, como puede ser la diferencia entre un gz y un bz2. Ambos se abren con un tar -algo (seria bueno que haya un flag que autodetecte que es). Hacer un particionador general, un instalador general y un vivificador (para cdroms vivos) general. Lo ideal es que el paquete pueda generarse e instalarse los Makefiles de cada softwre original. Asi cada desarrollador y los empaquetadores vinculados produciran los Makefiles apropiados para que se generen los paquetes que se instalen apropiadamente en una computadora. Diseñar instaladores, sistemas de menus y demas que puedan interoperar con los paquetes tal como esten en sus repositorios. 4 FAQ ¿Entonces cobrar es malo? ¿Qué hace la gente con las facturas a final de mes? La misma competencia se puede dar entre cooperativas ¿O es que el Software Libre sólo puede serlo gracias al subsidio estatal? Para nada es malo. La cuestion es que las formas que se usen para cobrar no aten a la gente. El concepto de distro esta comercialmente pensado para atar a la gente con el proveedor de esa distro. En cierta forma el concepto de producto armado de esa forma no es demasiado compatible con la filosofia del soft libre. Pues te ata a determinada empresa o grupo. La filosofía de prestacion de servicios en un entorno libre implica que puedas cobrar (mucho o poco) por tu servicio, pero que ese servicio no obligue al servido a seguir atado a ti. La division de la comunidad/empresas en grupos excluyentes, cada una con una distro es absolutamente artificial y la podemos superar. Es tan dificil aprender debian, si sabes bien suse, como aprender postfix si sabes sendmail. O sea el contenido de conocimiento adicional que representa una distro es poca, comparado con el conocimiento de base que uno puede tener con relacion al sistema gnu/linux. Coincido contigo, ahora, lo cierto es que elegir una distribución u otra tendrá fuertes implicaciones. No en balde los creadores de las distribuciones vieron cada uno un beneficio en ``forkear'' y crear una propia. No es ``la eleccion de distro'' la unica opción a tomar, diria que es la menos importante. Es falso el problema de elegir ``la distro''. Es originado por aquellos que hacen de ``la distro'' su producto. Para instalar un sistema con gnu/linux, se deben tomar cientos de decisiones. Elegir ``la distro'' no te hace avanzar mucho en ello. Que usar: KDE, gnome, blackbox?, sendmail o postfix?, que particiones usar?, que fondo de pantalla?, que tiene el menu?, que paquetes selecciono para cada estacion y servidor?, nfs/samba/openafs/gfs ?, nis/ldap/kerberos o una combinacion?, openwebmail o squirrel o decenas?, firefox o konqueror o ...?, evolution, kmail, o solo usar web?, instalo las maquinas desde un repositioro o preparo un cd?, y cientos más. No estoy de acuerdo, las variedad distribuciones son justamente un punto fuerte en Linux. Me parece bárbaro crear estándares, consortiums y ese tipo de cosas. Pero matar la diversidad, sería un error estrátegico muy grande. Si creo que se deberían crear estándares tan buenos que permitan convertir un RPM a un DEB de manera que se pueda usar para fines productivos, por poner un ejemplo. Entonces estamos de acuerdo. Si eso pasara y tuviesemos conversión transparente de deb a rpm y de rpm entre si y eventualmente deb entre si (ubunto - debian por ejemplo), las distros no serían relevantes, y ese es el punto, justamente. Y no planteo crear un consorcio, solamente meter la idea en las cabezas de los desarrolladores y empaquetadores para que poco a poco la cosa vaya por ese camino, bueno creo que ya esta pasando, a los sumo estoy dandome cuenta de una tendencia, no se si otro lo habra pensado en estos terminos o descripto. Nada nuevo bajo el sol, solo que puesto en palabras fuertes para hacer un poco de olas. La aparición del concepto de distro fué un aporte muy grande al movimiento, un paso necesario, pero creo que ya podemos abandonarlo. Como en la seleccion natural (explosion cámbrica), se produjo una explosion de diversidad, apenas se vio la importancia del empaquetamiento y se uso ese fenomenp para crear marcas comerciales: Red Hat. La respuesta de la comunidad no se hizo esperar y fue excelente: Debian. Pero llega un momento cuando ya se conoce mucho sobre un tema que la innovacion se mueve a otro lugar y es razonable que ls diversidad ceda y queden las buenas practicas y los estandares sobrevivientes. Esto empieza a pasar en el area del empaquetamiento. A nadie se le ocurriria plantear un sistema de paquetes que no sea tan util como el apt-get, simplemente es hora de que esos sistemas, los varios que puedan quedar, manejen todos los formatos de paquetes e interoperen con cualquier repositorio. frente al muchas veces trillado cuestionamiento de ¿para qué otra? La respuesta es por qué no? Si la distribución es mala o poco popular, desaparecerá o la usará poca gente. Por otro lado nadie puede asegurar que un fulanito que hace una distro XYZ quiera sumarse a una única distribución, así que no se pierde nada al fin y al cabo. La libertad esta en poder tener la fuente, la diversidad hace a la acción de libertad. De acuerdo, pero si la base de las distros es interoperable todos ganaremos mucho. O sea, lo que combato es el concepto de paquetes no interoperables, mas que lo que tu llamas distro y yo subdistro, y que en el futuro pueda quedar como distro. Los humanos poco a poco sacamos conclusiones sobre cuales son las ``buenas practicas'' y tendemos a ellas y creo que una buena práctica para la comunidad seria trabajar en un esquema de paquetes compatibles entre los diferentes sistemas. ¿Es esto muy dificil de lograr? ¿requiere consensos, discusiones, consorcios? NO, ESO ES LO BUENO, solo requiere centrar el empaquetamiento en el desarrollo de cada paquete original. Esta suceciendo naturalmente. No entendí muy bien el tema de convertir RPM a DEB y supongo que viceversa. Los dos tipos de paquetes básicamente guardan la misma inforamción. El problema es como dividis el universo de software en paquetes y como organizas las dependencias. Eso hace que sea dificil convertir un paquete en otro y que un rpm no sea compatible incluso con otro. Los de RedHat con los de SUSe por ejemplo. ¿y perder lo mejor de debian? ... El problema de Makefile es que no verifica y baja dependencias, es una herramientas "estática" (si las cosas no estan donde vos pedis, las cosas no andan ... si, si, usá autotools de última Usar debs de otras distros?, como cuales?, si todos usan los de debian ? ... Podrías decir Ubuntu, pero no aplica. El "main" de Ubuntu es propio de Ubuntu, si bien está basado originalmente en paquetes de debian, siguen su propio camino. En el caso de Universe se toma de debian y se compila. Si se agregan cosas nuevas, ahora está Debian Ubunto que pretende hacer lo contrario, tomar lo que tiene Ubuntu y aplicarlo en Debian. No, no. Me refiero poner en los makefiles originales la posibilidad de hacer los paquetes deb o rpm o tgz o todos ellos. ahh, creo que ahora voy entendiendo a donde a puntas. Seria algo como hacer : make deb ; make rpm; Eso suela bien y razonable. Un poco complejo tal vez para el programador, deberia haber herramientas (macros m4, alien[1] que funciones mas "inteligentemente", entre otras cosas). Exacto. Lo pueden hacer los empaquetadores también. Tu idea se llama gentoo Estoy de acuerdo en que Gentoo dio un paso en esa direccion, un paso mas que Linux from scratch. Y Ututo complemento la idea pues provee lo que Gentoo no quiso, ejecutables. Así Ututo es una distribución y Gentoo un mecanismo para hacer distribuciones. Pero creo que hay margen para avanzar más y si muchos nos metemos el tema en la cabeza podemos llegar en algán tiempo a anular las diversidad que es como azucar sintáctica, es decir diversidad inconducente. Toda esta historia empezo con los rpm, gran invento, pero que permitio separar a RedHat y construirla como empresa, lo que derivo en la respuesta .deb y el apt, base de identidad de Debian y su gran invención. Ahora, seria bueno apuntar a consolidar esas ideas y absorverlas en el movimiento global, de tal forma que en el futuro sea indiferente que instales un paquete desde deb o rpm, asi como es indiferente que instales desde un tar con bz2 o gzip, o que podes usar en una consola gráfica gnome y en otra kde en la misma computadora. Tambien es intersante apuntar a consolidar los instaladores, que puedan interoperar yast con webmin y otros en cualquier distro. Es decir ortogonalizar el espacio decisorio. Buscar una solución intermedia a corto plano no me parece mal, como es el caso de tener mantenedores de paquetes. Desde mi punto de vista lo ideal es no concentrar en distros la capa de mantenedores de paquetes, sean deb o rpm, sino incorporar ese trabajo en los paquetes originales. Y que debian y cualquier distro se arme en base a los makefile de los sitios originales o incluso los deb o los rpm de otras distros. Y que ``ese'' linux tenga repositorios con todos los paquetes y fuentes gnu que andan por ahi ? si mi interpretacion es correcta ... entonces Según lo que entendí en otro mail, no es del todo correcta. El plantea que el paquete de upstream (el que hace el programa) ya esté listo para poder meterse en cualquier distro. Concentrar el esfuerzo en las fuentes originales. Lo que traera como consecuencia que las distros dejen de ser relevantes y sean solo repositorios distintos con cambios menores y selecciones de diferentes paquetes. Eventualmente alguna especializada en un procesador o arquitetura. Siempre sera bueno tener un cd listo para instalar una distro musical o una interesante para los medicos, o una compilada para 486, que se yo. Pero todo tendera a estandarizase más, al menos en la base. El problema es que ``upstream'' no suele empaquetar, por costumbre o desinterés. Es por eso que los mantenedores aparecen. No se si está bien o mal, pero a mi pesonalmente me agrada andar haciendo paquetes, hay desafíos muy interesantes. Sin duda, entonces devolvamos esas contribuciones al paquete original. La voluntad dentro de debian no falta, para hacer lo que pides, los parches o bugs son reportados a upstream, el problema suele ser que hay upstreams y "upstreams". Algunos son menos "buena onda" y otros son copados y ayudan aplicando estos parches, otros se resisten. Como ejemplos se me ocurre ahora Gtk/Gnome (tambien vale aclarar que varios DD son Gnome developers) y como mal upstream esta el de centericq por ejemplo (tipo totalmente egolatra que no acepta un solo parche). Hay muchas veces que los makefiles rompen los policy (aca entrariamos en otro tema, "un generic policy" por ejemplo :D). Un caso que estoy tratando justo ahora es un paquete para ubuntu. El autor tiene en el makefile que instale los documentos INSTALL, ChangeLog , etc en /usr/share/nombre. El policy de debian dice que INSTALL no debe copiarse, pues no tiene sentido. ChangeLog debe ir comprimido con gzip o bzip2, por lo que tuve que parchar el Makefile para que el paquete cumpla dicho policy. Este es solo un pequeño ejemplo y facil de resolver porque usa autotools, pero hay casos donde el autor provee directamente el Makefile hecho a mano y es mucho mas dificil sacar un paquete que cumpla todo al pie de la letra. ¿Porque no mejorar los makefile de cada proyecto? Seria bueno generar un parche con todos los cambios propuestos, incluso un Makefile decente, cuando no exista. Entonces no existiría un paquete debian fuente, sino un parche debian fuente. Si el autor original no lo acepta, seguiran estando esos dos un buen tiempo. Ojo, los DD no solo hacen paquetes, tambien hacen la distro completa (son los únicos autorizados a hacer commits directos de códigos del proyecto). Lo que si hacen los DD es aprobar los uploads de aquellos que no son DDs, para garantizar su calidad. Claro, pero que es una distro si no la suma de paquetes. Para lo que tu dices ¿porque no hacer paquetes generales? Estoy de acuerdo en la idea, sería ideal (y hasta utopico) poder plantearlo a todas las distros y que sea aceptado (hasta diria que seria una mini guerra civil :D). Desgraciadamente no lo tenemos y personalmente creo que nunca lo tendremos (o por lo menos no creo vivir para verlo :). Hay un sitio que busca hacer rpm genericos, seria interesante plantear una cooperación debian y ese sitio para sacar rpm y deb con las mismas dependencias y forma de subdividir un paquete. [OpenPKG:SW] http://www.openpkg.org/doc/articles/sysadmin/article.html ahh, creo que ahora voy entendiendo a donde a puntas. Seria algo como hacer : make deb ; make rpm; Exacto!!!. Incluso una opcion intermedia seria rpm-redhat, rpm-suse o deb-ubunto llegado el caso, aunque sin duda lo mejor seria un rpm y un deb que hagan paquetes ``iguales'' en el sentido de las dependencias y totalmente transformables uno en otro. Opinion personal: las cosas estan como estan porque a cada uno le gusta hacerlo a su manera. Y si. Ese es el punto, que la gente ha focalizado la ``marca'' en la cuestion distro, las comerciales por cuestiones de dinero, pues instalaron la idea de distro-producto. Y debian como respuesta a ese fenomeno concentro su esfuerzo en la propia marca comunitaria. Si 1000 personas se agruparon en Debian con su idea, también pueden ponerse de acuerdo en otras. Creo que hoy en día se podria concentrar el esfuerzo en disolver ese foco y plantearlo en otro lado, un buen instalador general -algo como 123L que propuse- algun manejador de paquetes genérico, metadistros, etc Es cuestion de ir porponiendo la idea y poco a poco irá sucediendo -si la idea sirve, claro- a medida que mas gente ``compre'' esa idea. pero conicido que en general todas las subDebian no son mas que eso sub distros, quizas Ubunto pueda llegar a ser otra distro. Knoppix pondría como otra distro bastante alejada de Debian. Si bien usa muchisimo, el autor ha hecho grandes cambios en la parte de booteo (mucho relacionado con la deteccion de hardware principalmente). Claro y seria bueno que eso sea -y probablemente lo sea- un paquete mas en algun momento pueda adoptar Debian u otra distro. Asi como alguien quiere portar yast para debian y Arturo lo está haciendo para Ututo. Una idea interesante es ``sourceinstall'', aunque si se leen sus contras se nota que seria bueno que interopere con un repositorio y que sea automatizable http://www.gnu.org/software/sourceinstall/sourceinstall.html, tal como hace apt get source Aún si hubiese un solo particionador y un solo instalador y un solo todo, habria distros. Depende de que llames como distro. Yo en general llamo distro a un conjunto de paquetes ejecutables Asi por ejemplo debian es una distro, con cientos de variantes que se diferencian en al menos un paquete: el fondo de pantalla, el menu y algunos agregados. Es decir hay tres o cuatro distros importantes que concentran trabajo real al menos de compilación: SUSe, RedHat, Debian, Ututo, Ubunto, quizas alguna más. Algunas de ellas además se toman el trabajo de hacer y mejorar muchos paquetes, pero eso lo tomo como trabajo de hacer un paquete. Suse con Yast, o los scripts de arranque, etc. O Debian con apt. Seria bueno que los desarrolladores de esos paquetes se saquen su ``distro'' de la cabeza y los piensen para cualquir pc con gnu/linux. Su aparición fue necesaria, no habia otra forma de hacerlo, ahora hemos progresado mucho. Debian, SUSe, RedHat, Gentoo, Ututo y seguramente otras, tienen además el trabajo de empaquetado, que mantienen y construyen, lo que es un trabajo enorme, lo que propongo es que ese trabajo se vuelque en los paquetes originales y sea compartido por todos. ¿Que quedaria para las distros? El trabajo de compilar, y decidir que paquete meten en el cd y hacer los menus. O sea un trabajo duro: ``compilar'', pero relativamente simple y un trabajo estético y de toma de decisiones. Entonces las distros tendrian mucha menos relevancia. Por un lado aparecerian miles de distros, una por cada empresa por ejemplo. Pero por otro lado todas las distros serian mucho mas compatibles. Hasta es probable que solo quede un conjunto de rpms y otro de debs y que finalmente sean equivalentes incluso a nivel de dependencias. Si yo quiero un SO ``listo para instalar'' que tenga básicamente software para oficina, y vos queres hacer uno centrado en software para programadores, ya tenemos dos distros... Claro, lo armas y listo, o te lo bajas armado, O repositorios con diferentes paquetes en un cdrom. Hoyu ya con cualquier distro podes hacer eso. Repositorio podria haber uno solo (dificilmente, pero bueh imaginemos), pero la idea de distro esta bastante asociada a un medio de distribucion fisico: no puedo meter en un solo cd (o dvd) todo el repositorio de todo el software libre que existe, y aún si distribuyera no se cuantos dvds con todo, no seria practico. Claro la cuestión es no centrar el asunto en la ``distro'', que deje de ser relevante. Obviamente que todo seria mucho mas comodo si esa fuese la UNICA diferencia entre distros (y no existiesen las otras: escritorio gnome/kde/etc, paquetes dpkg/rpm/tar, etc) En varias distros actuales tenes eso como opciones, son parte de los cientos de opciones que tenes al instalar un equipo. Sobre la inutilidad de la guerra de las distros Con respecto al tema guerra de distros, creo que estas discusiones son muy pertinentes. Ayudan a todos nosotros a conocer las impresiones que podemos tener sobre cada distro y sus fortalezas y debilidades. Asi poder logar sacar las buenas ideas y utilizarlas en todas. 5 Derechos y estándares Este documento: puede ser utilizado por cualquiera bajo los términos de la GFDL. No contiene secciones invariantes; VALID HTML 3.2! cumple los estándares de la w3c. Bibliografía OpenPKG:SW OpenPKG. Sitio web. http://www.openpkg.org/ http://www.openpkg.org/doc/articles/sysadmin/article.html. -- Diego Saravia dsa en unsa.edu.ar <http://solve.net.ve/cgi-bin/mailman/listinfo/softwarelibre> _______________________________________________ Cancelar suscripción https://listas.softwarelibre.cu/mailman/listinfo/linux-l Buscar en el archivo http://listas.softwarelibre.cu/buscar/linux-l
