¿Cómo construir una herramienta con bibliotecas específicas sin romper Fedora?

¿Cómo construir una herramienta con bibliotecas específicas sin romper Fedora?

Hasta ahora nunca ha sido necesario desviarse de los componentes de desarrollo centrales estándar de Fedora 16. necesito construirproyecto desorden-mx, pero esta biblioteca requiere glib-2.0.32. Además de esto, glib-2 necesita libffi-3.0.11.

Puedo descargar el código fuente y crear estas bibliotecas, sin embargo, me preocupa que su instalación dañe el resto del sistema.

Elproyecto desorden-mxusa autotools y busca la versión glib-2.

Las preguntas son:

  1. Si construyo e instalo los nuevos componentes y algo sale mal, ¿puedes volver a usar yum o algo similar?

  2. ¿Hay alguna manera de hacer que autotools busque en otro directorio los encabezados instalados?

Respuesta1

No intente instalar bibliotecas Gtk/Gnome más nuevas en un directorio del sistema. Tienen poca compatibilidad con versiones anteriores y corre el riesgo de dañar los programas existentes.

Compile e instale nuevas bibliotecas en una jerarquía de directorios separada. Ejecute ./configure --helppara ver cómo especificar rutas a bibliotecas e incluir archivos cuando compila una biblioteca. Por ejemplo, si ves

PANGO_CFLAGS
            C compiler flags for PANGO, overriding pkg-config
PANGO_LIBS  linker flags for PANGO, overriding pkg-config

luego establezca las siguientes variables de entorno:

export PANGO_CFLAGS='-I /path/to/my/gnome/stuff/include'
export PANGO_LIBS='-L /path/to/my/gnome/stuff/libs'

Pase --prefix=/path/to/my/gnome/stuffa ./configure, para instalar todo en su propio directorio.

O, y esto será más fácil si necesita instalar muchas bibliotecas, reconstruir todo, incluso conpaquete-config. Instale también pkg-configdebajo , luego configure/path/to/my/gnome/stuff

export PKG_CONFIG=/path/to/my/gnome/stuff/bin/pkg-config

Respuesta2

Las fuentes que buscan dependencias a través de herramientas automáticas tienen un archivo configure.ac (y/o Makefile.am, no estoy seguro de este) en el que se definen esas dependencias. La mayoría de las veces, las personas/IDE simplemente colocarán sus versiones actualmente instaladas de las bibliotecas como dependencia, pero en realidad no las necesitan en una versión reciente.

Puede intentar modificar las versiones requeridas a sus versiones e intentar compilar el paquete.

No puede hacer que las herramientas automáticas busquen directamente en alguna ruta alternativa, pero IIRC las herramientas automáticas usan pkg-config para determinar los detalles de instalación del paquete (man pkg-config). Puede indicarle a pkg-config que busque en otros directorios mediante la variable ambiental PKG_CONFIG_PATH. Sin embargo, la ruta pkg-config solo funciona si tiene las bibliotecas más recientes instaladas en algún lugar. Pero luego creo que puedes editar los archivos *.pc para forzar que clutter-mx vincule estáticamente esas bibliotecas.

Si instala dos versiones de una biblioteca y algunas veces usa una y otras veces la otra, puede tener problemas. Si realmente reemplaza archivos que fueron colocados allí por rpm, está jodido.

Mi consejo es modificar las dependencias de compilación o, si es necesario, determinar por qué se requiere la versión más reciente de la biblioteca XY y modificar las fuentes de clutter-mx para no requerir esa versión reciente y trabajar con su versión actual. Mi segundo mejor consejo es obtener/compilar paquetes para su distribución de las bibliotecas necesarias e instalarlos. Realmente no deberías salirte del mundo configurado por tu distribución, es decir, el administrador de paquetes. Hay fuerzas del mal ahí fuera. :-)

información relacionada