¿Me pueden ayudar con mi problema de dependencia de software?

12

Esta es una pregunta canónica sobre las dependencias de compilación y la gestión de paquetes.

Tengo una pregunta con respecto a la compilación de puertos / software o la instalación de RPM en mi servidor * nix. Cuando trato de hacer esto, recibo muchos mensajes sobre dependencias faltantes.

¿Puede la comunidad Server Fault ayudar?

dunxd
fuente

Respuestas:

10

Bienvenido a Server Fault. En general, este tipo de pregunta no es sobre el tema aquí. Se espera que la mayoría de los administradores de sistemas ya hayan enfrentado este problema antes de convertirse en administradores de sistemas a través de modificaciones en sus propias estaciones de trabajo. Sin embargo, los administradores de sistemas que provienen de un fondo de Windows pueden no haber enfrentado esto, así que aquí hay algunas cosas a tener en cuenta:

¿Por qué no utilizar un administrador de paquetes para instalar software en su servidor?

Los administradores de paquetes como yumo aptmanejan estas dependencias por usted. Además, también se pueden usar para administrar actualizaciones del software en su servidor. La mayoría de las versiones de * nix tendrán un administrador de paquetes instalado de forma predeterminada, especialmente en los VPS que vienen con el sistema operativo preinstalado. Si realmente es nuevo en esto, use uno de estos en su sistema de producción y guarde aventuras en la compilación o instalación de RPM de vanguardia para su entorno de prueba.

¡Pero debo usar un paquete más actualizado que el que está disponible en mi administrador de paquetes!

La mayoría de los administradores de paquetes se pueden configurar para usar diferentes repositorios; es posible que haya uno que proporcione la versión del paquete que necesita y aún así le permita aprovechar las funciones de su administrador de paquetes.

El paquete que necesito no está disponible a través de repositorios o administradores de paquetes

En ese caso, es probable que haga necesario averiguar las dependencias (o extraerla, y utilizar una más estable / versión común del software). Probablemente debería hacer lo siguiente en un entorno de prueba y tomar notas cuidadosas de lo que hace:

  • Asegúrese de leer la documentación del software que está instalando; esto probablemente enumerará lo que necesita instalar primero, pero no lo que se requiere para ese software.
  • Use su administrador de paquetes para instalar las cosas que se requieren, en la mayoría de los casos estarán disponibles.
  • Una vez que haya completado esto, intente instalar.
  • Si aún ve mensajes sobre dependencias faltantes, tome nota de todas ellas y vuelva a intentar instalar la mayor cantidad posible utilizando su administrador de paquetes.
  • Si no se encuentra una dependencia, debe considerarla una subtarea y tratarla de forma recursiva (encontrar el tarball de origen, buscar dependencias, instalar).
  • Es un proceso iterativo.

Sigo teniendo problemas!

Si ha seguido todos los pasos anteriores y todavía tiene problemas, es posible que se haya encontrado con algún problema extraño con el que otros Faulters del servidor pueden ayudarlo. Cree una nueva pregunta, dando detalles de qué software está tratando de instalar, qué versión y los mensajes de error exactos que está viendo.

Asesoramiento específico para los principales sistemas de gestión de paquetes.

Gestión de paquetes RPM (RHEL / Fedora y clones) y DEB (Debian / Ubuntu y clones)

  • yum whatprovides filename es una forma excelente de encontrar el paquete que proporciona un archivo o biblioteca específicos en un sistema de tipo RHEL.
  • ¡No lo use a ./configure && make && make installciegas si es posible! La administración de paquetes se inventó por esta misma razón para evitar el desorden incómodo e imposible de mantener que resulta de la instalación imposible de rastrear muchos archivos en conflicto.
  • Muchas bibliotecas se dividen en dos partes: binarias (objetos compartidos, por ejemplo) y desarrollo (encabezados). Por lo tanto, necesitaría ambos libfooy libfoo-devel(o -dev) paquetes.
  • Considere usar fpm( https://github.com/jordansissel/fpm ) para convertir tarballs en RPM y DEB limpios
  • Si está lanzando sus propios paquetes, USTED es la persona responsable de sus actualizaciones, pruebas y mantenimiento. Si no tienes infraestructura para eso, definitivamente estás apuntando demasiado alto.

Encontrar dependencias por nombre de archivo para RPM

http://rpmfind.net es un buen lugar para buscar nombres de paquetes si conoce el nombre del archivo del que se queja el procedimiento de instalación. Sin embargo, no se recomienda combinar y mezclar paquetes de diferentes distribuciones.

dunxd
fuente
Creo que sería útil proporcionar una sección que discuta el problema de las dependencias de la biblioteca que puede ser un poco más difícil de resolver, pero tengo menos experiencia en esto. ¿Alguien quiere contribuir?
dunxd
Los elementos que recomendaría encarecidamente incluirían detalles sobre RPM src y cómo mantener un repositorio local personalizado. La creación de archivos deb o rpm debe ser parte del cinturón de herramientas de cualquier persona que tenga que funcionar con requisitos de paquetes poco convencionales.
Tim Brigham
Podría valer la pena ampliar esto para tocar el tema de las pilas de aplicaciones y sus dificultades. La pregunta "paquete más actualizado" me recordó a una reciente .
Andrew B
Es un wiki de la comunidad, así que siéntete libre de agregar cosas, o por supuesto, da tu propia respuesta :-)
dunxd