Cómo instalar y usar 'yum-utils' para mantener Yum y mejorar su rendimiento


Independientemente de que Fedora comience a adoptar dnf como el nuevo administrador de paquetes y la biblioteca de administración de paquetes predeterminada, no reemplazará al viejo administrador de paquetes yum para siempre en otras distribuciones derivadas (como Red Hat Enterprise Linux (RHEL) y CentOS) hasta que se haya probado para ser tan confiable como yum y más sólido (según el wiki del Proyecto Fedora, al 15 de noviembre de 2015, dnf todavía está en estado comprobable). Por lo tanto, sus habilidades de manejo del yum le serán de gran utilidad durante bastante tiempo.

Por esa razón, en esta guía te presentaremos yum-utils, una colección de utilidades que se integran con yum para extender sus características nativas de varias formas, haciéndolas más poderosas y fáciles de usar.

Instalación de yum-utils en RHEL / CentOS

Yum-utils está incluido en el repositorio base (que está habilitado de forma predeterminada), por lo que instalarlo en cualquier distribución basada en Fedora es tan fácil como hacerlo:

# yum update && yum install yum-utils

Todas las utilidades proporcionadas por yum-utils se instalan automáticamente con el paquete principal, que describiremos en la siguiente sección.

Explore las utilidades proporcionadas por el paquete yum-utils

Las herramientas proporcionadas por yum-utils se enumeran en su página de manual:

# man yum-utils

Aquí hay 10 de esas utilidades de yum que pensamos que le interesarían:

debuginfo-install instala los paquetes debuginfo (y sus dependencias) necesarios para depurar en caso de una falla o mientras se desarrollan aplicaciones que usan un determinado paquete.

Para depurar un paquete (o cualquier otro ejecutable), también necesitaremos instalar gdb (el depurador GNU) y usarlo para iniciar un programa en modo de depuración.

Por ejemplo:

# gdb $(which postfix)

El comando anterior iniciará un shell gdb donde podemos escribir las acciones que se ejecutarán. Por ejemplo, ejecutar (como se muestra en la imagen a continuación) iniciará el programa, mientras que bt (no se muestra) mostrará el seguimiento de la pila (también conocido como seguimiento) del programa, que proporcionará una lista de llamadas a funciones que llevaron a un cierto punto en la ejecución del programa (con esta información, tanto los desarrolladores como los administradores del sistema pueden averiguar qué salió mal en caso de una falla).

Otras acciones disponibles y sus resultados esperados se enumeran en man gdb.

El siguiente comando muestra desde qué repositorio se instalaron los paquetes instalados actualmente:

# find-repos-of-install httpd postfix dovecot

Si se ejecuta sin argumentos, find-repos-of-install devolverá la lista completa de paquetes instalados actualmente.

package-cleanup gestiona la limpieza de paquetes, duplicados, paquetes huérfanos (programas instalados desde una fuente distinta a los repositorios configurados actualmente) y otras inconsistencias de dependencia, incluida la eliminación de kernels antiguos como se muestra en el siguiente ejemplo:

# package-cleanup --orphans
# package-cleanup --oldkernels

No tiene que preocuparse de que el último comando dañe su kernel. Solo afectará a los paquetes de kernel antiguos (versiones anteriores a la que se está ejecutando actualmente) que ya no son necesarios.

repo-graph devuelve una lista completa de dependencias de paquetes en formato de puntos para todos los paquetes que están disponibles en los repositorios configurados. Alternativamente, repo-graph puede devolver la misma información por repositorio si se usa con la opción --repoidu003d .

Por ejemplo, veamos las dependencias de cada paquete en el repositorio de actualizaciones:

# repo-graph --repoid=updates | less

En el comando anterior, estamos enviando la salida de repo-graph a less para facilitar la visualización, pero también puede redirigirlo a un archivo local para una inspección posterior:

# repo-graph --repoid=updates > updates-dependencies.txt

En cualquier caso, podemos ver que el paquete iputils depende de systemd y openssl-libs.

repoclosure lee los metadatos de los repositorios configurados, verifica las dependencias de los paquetes incluidos en ellos y muestra la lista de dependencias no resueltas para cada paquete:

# repoclosure

repomanage consulta un directorio con paquetes rpm y devuelve una lista de los paquetes más nuevos o más antiguos en un directorio. Esta herramienta puede resultar útil si tiene un directorio donde almacena varios paquetes .rpm de diferentes programas.

Cuando se ejecuta sin argumentos, repomanage devuelve los paquetes más nuevos. Si se ejecuta con el indicador --old , devolverá los paquetes más antiguos:

# ls -l
# cd rpms
# ls -l rpms
# repomanage rpms

Tenga en cuenta que cambiar el nombre de los paquetes rpm NO afectará el funcionamiento de repomanage.

repoquery consulta los repositorios de yum y obtiene información adicional sobre los paquetes, ya sea que estén instalados o no (dependencias, archivos incluidos en el paquete, etc.).

Por ejemplo, htop (supervisión de procesos de Linux) no está instalado actualmente en este sistema, como puede ver a continuación:

# which htop
# rpm -qa | grep htop

Ahora suponga que queremos enumerar las dependencias de htop, junto con los archivos que se incluyen en una instalación predeterminada. Para hacerlo, ejecute los siguientes dos comandos, respectivamente:

# repoquery --requires htop
# repoquery --list htop

yum-debug-dump le permite volcar una lista completa de todos los paquetes que ha instalado, todos los paquetes disponibles en cualquier repositorio, la configuración importante y la información del sistema en un archivo comprimido.

Esto puede resultar útil en caso de que desee depurar un problema que haya ocurrido. Para nuestra conveniencia, yum-debug-dump nombra el archivo como yum_debug_dump- - .txt.gz, lo que nos permite rastrear los cambios a lo largo del tiempo.

# yum-debug-dump

Como con cualquier archivo de texto comprimido, podemos ver su contenido usando el comando zless:

# zless yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

Si necesita restaurar la información de configuración proporcionada por yum-debug-dump, puede usar yum-debug-restore para hacerlo:

# yum-debug-restore yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

yumdownloader descarga archivos RPM de origen desde repositorios, incluidas sus dependencias. Útil para crear un depósito de red al que se pueda acceder desde otras máquinas con acceso restringido a Internet.

Yumdownloader le permite no solo descargar los RPM binarios sino también los de origen (si se usa con la opción --source ).

Por ejemplo, creemos un directorio llamado htop-files donde almacenaremos los RPM necesarios para instalar el programa usando rpm. Para hacerlo, necesitamos usar el --resolve cambiar junto con yumdownloader:

# mkdir htop-files
# cd htop-files
# yumdownloader --resolve htop
# rpm -Uvh 

reposync está estrechamente relacionado con yumdownloader (de hecho, admiten casi las mismas opciones) pero ofrece una ventaja considerable. En lugar de descargar archivos RPM binarios o de origen, sincroniza un repositorio remoto con un directorio local.

Sincronicemos el conocido repositorio EPEL con un subdirectorio llamado epel-local dentro del directorio de trabajo actual:

# man reposync
# mkdir epel-local
# reposync --repoid=epel --download_path=epel-local

Tenga en cuenta que este proceso llevará bastante tiempo ya que está descargando paquetes 8867:

Una vez que se haya completado la sincronización, verifiquemos la cantidad de espacio en disco utilizado por nuestro espejo recién creado del repositorio EPEL usando el comando du:

# du -sch epel-local/*

Ahora depende de usted si desea mantener este espejo EPEL o usarlo para instalar paquetes en lugar de usar uno remoto. En el primer caso, tenga en cuenta que deberá modificar /etc/yum.repos.d/epel.repo en consecuencia.

yum-complete-transaction es parte del programa yum-utils que captura transacciones yum inacabadas o abortadas en un sistema e intenta completarlas.

Por ejemplo, cuando actualizamos los servidores Linux a través del administrador de paquetes yum, a veces arroja un mensaje de advertencia que dice lo siguiente:

Quedan transacciones sin terminar. Podría considerar ejecutar primero yum-complete-transaction para finalizarlos.

Para solucionar dichos mensajes de advertencia y resolver dicho problema, el comando yum-complete-transaction aparece en la imagen para completar las transacciones sin terminar, encuentra esas transacciones yum incompletas o abortadas en los archivos de transacciones todas * y transacciones realizadas * que se pueden encontrar en/directorio var/lib/yum.

Ejecute el comando yum-complete-transaction para finalizar las transacciones yum incompletas:

# yum-complete-transaction --cleanup-only

Ahora los comandos yum se ejecutarán sin las advertencias de transacciones incompletas.

# yum update

Nota: Este consejo es sugerido por uno de nuestros lectores habituales, el Sr. Tomas, en la sección de comentarios aquí.

Resumen

En este artículo hemos cubierto algunas de las utilidades más útiles proporcionadas a través de yum-utils. Para obtener una lista completa, puede consultar la página del manual ( man yum-utils ).

Además, cada una de estas herramientas tiene una página de manual separada (consulte man reposync, por ejemplo), que es la fuente principal de documentación a la que debe consultar si desea obtener más información sobre ellas.

Si se toma un minuto para revisar la página de manual de yum-utils, tal vez encuentre otra herramienta que le gustaría que cubriéramos con mayor profundidad en un artículo separado. Si es así, o si tiene preguntas, comentarios o sugerencias sobre este artículo, no dude en hacernos saber cuál enviándonos una nota utilizando el formulario de comentarios a continuación.