2010-10-08 6 views
7

Las personas que realmente conocen la respuesta a esta pregunta son aquellas que desarrollan programas o bibliotecas que están incluidas en las distribuciones de Linux y que dependen de otras bibliotecas que se incluyen en las distribuciones de Linux. El solo decirme qué hacen en términos del entorno de desarrollo que describo sería útil.¿Qué son buenas distribuciones de Linux (y métodos) para desarrollar los últimos paquetes de Linux en sentido ascendente (kernel, Gnome, etc.)?

El problema es básicamente así:

distribuciones de Linux lían el núcleo de Linux con Linux típica de fontanería - simplista, dbus, udev y similares. La mayoría también incluye entornos de escritorio como KDE o Gnome.

Si bien la distribución puede tener algunos paquetes propios del paquete de paquetes, la mayoría de los programas y bibliotecas provienen de fuentes anteriores, lo que significa fuentes distintas a él. Los paquetes como dbus son "ascendentes" y fluyen hacia abajo a distribuciones como Debian, Fedora, Ubuntu y similares.

A veces utilizo estos programas y siento que se pueden mejorar. Algunas de las mejoras son correcciones de errores con las que no se puede discutir, digamos un pequeño parche que evita que una falla de segmentación provenga de una violación innecesaria de la memoria.

Al compilar estos paquetes, una cosa es que las distribuciones son listas "dependientes", ya que muchos de estos programas dependen de ciertas bibliotecas (y ciertas versiones de esas bibliotecas), y algunas de esas bibliotecas dependen de otras bibliotecas. Esto lleva a algunas de las complicaciones que estoy enfrentando.

Si encuentro un error en un programa o biblioteca y lo informo en sentido ascendente, una pregunta frecuente es: "¿está utilizando la última versión en control de código fuente o una versión anterior?". Es comprensible que los desarrolladores quieran que use el código de la última confirmación, ya que no quieren perder tiempo recorriendo terreno que ya han cubierto, especialmente si el error ha sido resuelto.

Así que voy a obtener la última confirmación. Pero luego me encuentro con un problema porque el último compromiso ahora depende de una biblioteca que es más nueva de lo que usa mi sistema operativo.

Un ejemplo podría ser si estoy mirando un PDF con el lector predeterminado en Ubuntu, evince. No se muestra correctamente debido a que lo que parece ser un defecto en la biblioteca poppler de la que depende depende. Entonces publico un error, pero quieren saber si tengo la última versión de poppler. Así que descargué la última confirmación de poppler, pero la biblioteca poppler depende de la biblioteca de cairo, y mi sistema operativo no tiene la última biblioteca de cairo. Así que tengo que conseguir eso, pero luego Cairo se queja de que no tengo las últimas bibliotecas pixman y x11.

Este es un ejemplo de esto, pero vale prácticamente para cualquier paquete.

Así que mi pregunta es, ¿qué es una buena distribución de Linux para este tipo de cosas? ¿Uno que es conocido por tener los paquetes más actualizados, o al menos la opción de obtenerlos fácilmente?

O tal vez una distribución de Linux que me permite hacer tales cosas más fácilmente. He escuchado hablar sobre cómo Gentoo construye desde la fuente a través de emerge, y pude ver que esto solucionaba muchos problemas.

También existe la opción de tener un subsistema de los últimos paquetes en un entorno chrooted dentro de otro sistema utilizando herramientas como pbuilder y debootstrap.

Por último, podría descargar los últimos commits de todas las bibliotecas, compilar el primero sin dependencias que me preocupen primero, y luego ir al siguiente y compilarlo, señalando el programa para utilizar mi biblioteca local compilada , no la biblioteca del sistema, y ​​luego hacer eso de nuevo y así sucesivamente. Esto es lo que trato de evitar por varias razones (demasiada manipulación manual, podría pasar por alto una dependencia importante, etc.)

+0

Con respecto a mi pregunta anterior, descubrí que Gnome tiene un sistema de compilación llamado "jhbuild" (http://live.gnome.org/Jhbuild) donde puede obtener las últimas versiones de Git commit de todo el proyecto Gnome . Entonces esa sería la solución al ejemplo de arriba. Estoy de acuerdo en que los KVM son un buen entorno para jugar sin preocuparme por demasiado daño. He comenzado a hacerlo más después de leer las respuestas. Gracias por las respuestas –

Respuesta

0

Con respecto a mi pregunta anterior, descubrí que Gnome tiene un sistema de compilación llamado "jhbuild" (live.gnome.org/Jhbuild) donde puede obtener las últimas versiones de Git commit de todo el proyecto Gnome. Entonces esa sería la solución al ejemplo de arriba. Estoy de acuerdo en que los KVM son un buen entorno para jugar sin preocuparme por demasiado daño. He comenzado a hacerlo más después de leer las respuestas. Gracias por las respuestas

1

Gentoo es bastante bueno con los paquetes de sangrado, siempre que se desenmascare " ~ x86 "(o ~ amd64 o ~ arco para lo que sea que sea tu arco).

ebuilds se pueden integrar con control de versiones, por lo que no es demasiado difícil hacer que un ebuild modificado extraiga la última versión de revisión svn o git y luego compilar e instalar como si fuera el paquete distribuido.

+0

Además, dado que Gentoo construye cosas desde el origen, si actualiza ciertos paquetes o un montón de paquetes, puede reconstruir todos sus dependientes con facilidad (y automáticamente, usando 'revdep-rebuild'). Una distribución binaria requiere que actualice los paquetes en el paso de bloqueo. –

4

involucrarse con una distro, se centran en los paquetes que desea mejorar
distros asegurar que las versiones de los paquetes trabajan bien juntos. Este es el primer trabajo en la construcción de un sistema Linux y ya lo han hecho. Aseguran que todo "se ajusta". Si desea mejorar un paquete, realice las mejoras en la versión de la distribución. Si el parche tiene valor, puede aplicarse a la última versión.

No todos los paquetes sufren problemas de dependencia, por lo que puede compilarlos desde el repositorio y contribuir de esa manera. En primer lugar, la distribución es el entorno, con paquetes upstream que a menudo reciben contribuciones de los desarrolladores de distribución.

No tiene mucho sentido crear una distribución completa solo para desarrollar para el núcleo Gnome realmente. Simplemente mejore, digamos, la compilación Gnome de Gentoo y trate de obtener parches aplicables aguas arriba.

Enfóquese en donde puede ingresar valor, y no gastar 1/4 de su vida esperando compilaciones y resolviendo por qué el paquete X no compilará contra la biblioteca Y cuando solo quiera trabajar en Z de todos modos.

trabajo con Fedora Rawhide al hacer cualquier dev-cosas, que no es tan borde, como algo de sangrado, pero ofrece una buena estabilidad y IMVHO mutabilidad

o hay siempre:

Linux From Scratch, si te gusta dolor.

+0

¡Un gran consejo! +1 – slezica

2

No debería importar realmente. Una distribución debería darle una estructura básica y algo de estabilidad, por lo tanto, use la distribución que "funcione" para usted. Y lo que sea que trabaje puede venir de un sistema de control de revisión de todos modos.

Dicho esto, comencé con Debian en 1994 y todavía lo uso así como Ubuntu (y he estado manteniendo paquetes para Debian desde 1995 también). Cuando desarrollo en Ubuntu, a veces tomo un paquete fuente de Debian inestable y lo construyo localmente, que en realidad es bastante simple pero realmente útil. De esa manera tengo lo mejor de ambos mundos: un conjunto de cosas "razonablemente actual" a través de actualizaciones bianuales de Ubuntu, además de inserciones selectivas de todo lo que necesito y que está a punto de desangrarse. Una muy buena alternativa es la prueba de Debian que tengo en otros sistemas.

Otra opción es la virtualización: basta con agregar una instancia de kvm, o xen, o virtualbox de una distribución sin cabeza de 'borde sangrante' (por ejemplo, Debian inestable) para probar.

0

Gentoo es útil si necesita o desea editar el código fuente de un paquete.Sin embargo, si solo necesita los binarios, Arch Linux es una buena opción, y está bien documentada. Si desea tener más control, siempre puede descargar y compilar los paquetes, pero veo que solo necesita paquetes actualizados para que Arch sea mejor. Tu decides.

1

La elección de la distribución no debería importar mucho. Cualquiera de las versiones de Debian inestable, Fedora Rawide o Mandriva Cooker debería ser buena para un entorno de desarrollo de paquetes Linux.

Cuestiones relacionadas