Trabajar con dependencias de paquetes en Red Hat Linux

Trabajar con dependencias de paquetes en Red Hat Linux

Objetivo

Nuestro objetivo es acostumbrarme a las herramientas disponibles para encontrar información sobre las dependencias de los paquetes en un sistema basado en RPM.

Sistema operativo y versiones de software

  • Sistema operativo: Red Hat Enterprise Linux 7.5
  • Software: RPM 4.11, yum 3.4.3

Requisitos

Acceso privilegiado al sistema.

Dificultad

FÁCIL

Convenciones

  • # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
  • ps - Dados los comandos de Linux para ser ejecutados como un usuario regular no privilegiado

Introducción

RPM, que representa Red Hat Package Manager, es un administrador de paquetes bien conocido y maduro utilizado por todas las distribuciones de sabor a Hat Red, así como SUSE. Con RPM, el paquete puede definir las relaciones entre los paquetes, e incluso con versiones de paquetes, por ejemplo, un servidor Apache Tomcat necesita un entorno Java adecuado para poder ejecutar.

Por otro lado, para instalar un entorno Java, no necesita un servidor Tomcat: puede decidir ejecutar una aplicación basada en Java diferente, tal vez una escrita por usted mismo a mano cuando sea necesario para hacer su trabajo. En otras palabras, el servidor Tomcat depende en Java.

RPM puede hacer que la vida de un sistema de un sistema sea mucho más fácil presentando estas dependencias, y las herramientas que se basan en RPM como la rpm utilidad, o beque puede resolver automáticamente estas dependencias e instalar todos los paquetes adicionales necesarios para que un nuevo componente se ejecute correctamente.



Reuniendo información

Para conocer la lista de paquetes que foo.El paquete de barra depende, simplemente ejecute:

# Yum Deplist Foo.bar

Y para encontrar la lista de paquetes que requieren (dependen) el paquete Foo.bar:

RPM -Q -WhatRequires Foo.bar

Un ejemplo de la vida real con un paquete genérico: intento. Veamos qué paquetes necesitan el paquete Bash:

# paquete de bash de yum: bash.x86_64 4.2.46-30.Dependencia de El7: libc.entonces.Proveedor de 6 () (64 bits): GLIBC.x86_64 2.17-222.Dependencia de El7: libc.entonces.6 (GLIBC_2.11) (64 bits) Proveedor: GLIBC.x86_64 2.17-222.Dependencia de El7: libc.entonces.6 (GLIBC_2.14) (64 bits) Proveedor: GLIBC.x86_64 2.17-222.Dependencia de El7: libc.entonces.6 (GLIBC_2.15) (64 bits) Proveedor: GLIBC.x86_64 2.17-222.Dependencia de El7: libc.entonces.6 (GLIBC_2.2.5) (64 bits) Proveedor: GLIBC.x86_64 2.17-222.Dependencia de El7: libc.entonces.6 (GLIBC_2.3) (64 bits) Proveedor: GLIBC.x86_64 2.17-222.Dependencia de El7: libc.entonces.6 (GLIBC_2.3.4) (64 bits) Proveedor: GLIBC.x86_64 2.17-222.Dependencia de El7: libc.entonces.6 (GLIBC_2.4) (64 bits) Proveedor: GLIBC.x86_64 2.17-222.Dependencia de El7: libc.entonces.6 (GLIBC_2.8) (64 bits) Proveedor: GLIBC.x86_64 2.17-222.Dependencia de El7: libdl.entonces.2 () (64 bits) Proveedor: GLIBC.x86_64 2.17-222.Dependencia de El7: libdl.entonces.2 (GLIBC_2.2.5) (64 bits) Proveedor: GLIBC.x86_64 2.17-222.Dependencia de El7: libtinfo.entonces.Proveedor de 5 () (64 bits): ncurses-libs.x86_64 5.9-14.20130511.EL7_4 Dependencia: RTLD (GNU_HASH) Proveedor: GLIBC.x86_64 2.17-222.Proveedor de El7: GLIBC.i686 2.17-222.El7 
Copiar

Desde la perspectiva del paquete, intento es muy genérico, y como se ve arriba, depende de algunos paquetes centrales. Pero si nos gustaría instalar algo mucho más dependiente, digamos, el konzol Emulador de terminal KDE En un Red Hat Linux con un administrador de escritorio GNOME, podemos obtener más de una página Lar larga lista de dependencias. Y con konzol, El caso es aún más complicado, ya que se basa en los paquetes QT y KDE, por lo que para instalarlo, deberá instalar todo el entorno KDE junto a Gnome (lo que ciertamente puede hacer) para proporcionar todo konzol necesidades.

Para obtener una idea más de qué paquetes se instalarán, verifique la lista proporcionada por YUM antes de comenzar la instalación:

# yum install konsole resolución de dependencias-> en ejecución de verificación de transacciones ---> paquete konsole.x86_64 0: 4.10.5-4.El7 se instalará-> Dependencia de procesamiento: Konsole-Part = [.. .] 
Copiar

En el caso de un sistema Red Hat con Gnome, puede llevar bastante tiempo resolver las dependencias de una aplicación KDE por primera vez, y cuando eso esté terminado, YUM presentará el único paquete que pedimos, con un buen tamaño pequeño. Seguido de más de cientos de paquetes instalados para dependencias:

[… .]-> Ejecución de la verificación de transacciones ---> Sistema de Boost de paquete.x86_64 0: 1.53.0-27.El7 se instalará ---> paquete de impulso-hilo.x86_64 0: 1.53.0-27.El7 se instalará -> Dependencias de resolución de dependencia terminadas resueltas =========================================== ==================================================== ======================================= Package Arch Version Size ======== ==================================================== ==================================================== =================== Instalación: Konsole x86_64 4.10.5-4.EL7 RHEL-7-SERVER-RPMS 78 K Instalación para dependencias: OpenExr-LIBS [.. .] 
Copiar

Y en el resumen podemos ver que la instalación usará mucho más espacio en el disco al final, luego el tamaño del paquete que necesitamos:

[… .] Resumen de la transacción ================================================== ==================================================== ============================= Instalar 1 paquete (+120 paquetes dependientes) Tamaño de descarga total: 108 m Tamaño instalado: 307 m 
Copiar

Esto es mucho, pero obtuvimos una información útil sobre cuánto espacio se utilizará. Esto es especialmente útil si instalamos muchos paquetes en una transacción.

Si bien en este caso la transacción es un desperdicio, el objetivo de las dependencias se trata en última instancia de ahorrar recursos: si alguien implementa alguna funcionalidad en su código, y eso puede llamarse en el sistema, el próximo desarrollador puede no necesitar implementar la misma funcionalidad de nuevo, pero use la implementación ya existente. Para el konzol Ejemplo, si desea instalar akregador La próxima vez, el sistema ya tendrá muchas dependencias resueltas, como kdepim Paquete que contiene akregador También se basa en QT, kdelibs, y tal.

Nosotros podemos usar rpm utilidad La información obtiene la información al revés: enumeremos los paquetes instalados que requieren el intento paquete:

# rpm -q --whatrequires bash dracut-033-535.El7.x86_64 initscripts-9.49.41-1.El7.x86_64 Autofs-5.0.7-83.El7.x86_64 lvm2-2.02.177-4.El7.x86_64 rsyslog-8.24.0-16.El7.x86_64 
Copiar

Limpieza de paquetes innecesarios

Si mantenemos nuestros sistemas actualizados y cambiamos o ampliamos sus roles, los paquetes de "basura" aparecerán inevitablemente. En el sentido del paquete, la basura significa que ya no se necesitan y/o paquetes en desuso. Para seguir el ejemplo anterior, ya no necesitamos akregador, Debido a que movimos el "servicio" del manejo de RSS a un concentrador RSS central hipotético dentro de nuestro sistema, por lo que después de migrar nuestros alimentos al lugar central, desinstalamos la aplicación local de manejo de RSS. Que no eliminarán todos los paquetes KDE, ya que muchos otros paquetes pueden depender de ellos. Pero si no, esos paquetes son basura y consumirán recursos, incluidos tiempos de actualización más largos, como beque Por defecto, actualizará todo a ciegas, encuentra nuevos paquetes/errata para.

El gasto de recursos en la actualización de algunos paquetes innecesarios en una computadora portátil con conexión de banda ancha y SSD puede no parecer un problema, pero imagine un centro de datos con cientos o miles de computadoras, y obtienes la imagen. En general, es una buena idea mantener todos los sistemas simples, y la gestión de recursos es solo un punto. Cuanto más complejo sea un sistema, más por error es. Más componentes significan más errores posibles.

Para obtener una descripción general de los paquetes innecesarios instalados en el sistema, podemos usar yum y paquete-limpieza de la misma manera que en CentOS u otra característica de YUM, autororator:

Yum Autoremove


Los paquetes que estas herramientas marcan como innecesarios no son idénticos.

Al usar cualquiera de estas herramientas, se recomienda verificar que beque va a eliminar, y posiblemente pruebe lo que la limpieza dará como resultado máquinas de prueba con contenido de paquete idéntico antes de limpiar los sistemas de producción.

Estas herramientas son realmente inteligentes, pero no todos los conocimientos: por ejemplo, no habrá entrada en la base de datos de RPM sobre una aplicación PHP personalizada que se ejecuta en la parte superior de un servidor web que llama tazas para imprimir pedidos entrantes en una impresora conectada al servidor. Es decir, ahí poder ser una entrada si la aplicación está empaquetada con las dependencias correctas incluidas e instalada correctamente con rpm o beque - Pero eso requiere esfuerzo, y todos los servicios deben empaquetarse de la misma manera si desea sentirse seguro con limpiezas automáticas basadas en Yum.

Resolver problemas de dependencia

Especialmente en entornos grandes, puede haber problemas de dependencia al instalar o actualizar sistemas.

La siguiente captura de pantalla muestra un problema simple:

Resolver dependencias con RPM

En la pantalla terminal anterior intentamos instalar el NRPE Paquete, el cliente necesitaba monitorear muchos aspectos del sistema con Nagios. Descargamos el cliente para la distribución, pero ambos rpm y beque falla con el mismo error: el NRPE El paquete requiere (depende de) el Nagios-Common paquete. En este ejemplo, podemos obtener el paquete necesario de la misma fuente, y al instalar ambos los rpm La utilidad considera que la dependencia en la que fallamos anteriormente se satisfará al final de la transacción e instala ambos paquetes, saliendo silenciosamente con éxito.

Conclusión

YUM y RPM son herramientas esenciales cuando se trabajan con distribuciones utilizando el RPM Package Manager. Al conocer el conjunto de herramientas, es mucho más fácil y generalmente más seguro resolver la instalación, actualizar y modificar las tareas en el entorno de software de un sistema determinado.

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Archivos de configuración de Linux: los 30 principales más importantes
  • Descarga de Linux
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • ¿Puede Linux obtener virus?? Explorando la vulnerabilidad de Linux ..
  • Cómo instalar Yum en Linux
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
  • La mejor distribución de Linux para desarrolladores
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?