Búsqueda de sitios web

Cómo instalar y utilizar 'yum-utils' para mantener Yum y aumentar su rendimiento


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

Por ese motivo, en esta guía le presentaremos yum-utils, una colección de utilidades que se integran con yum para ampliar sus funciones nativas de varias maneras, haciéndolo más potente y más fácil 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 hacer:

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 yum que pensamos que le interesarían:

1. Depurar un paquete

debuginfo-install instala los paquetes debuginfo (y sus dependencias) necesarios para depurar en caso de fallo o mientras desarrolla aplicaciones que utilizan 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 gdb shell donde podemos escribir las acciones que se ejecutarán. Por ejemplo, ejecutar (como se muestra en la imagen siguiente) iniciará el programa, mientras que bt (no se muestra) mostrará el seguimiento de la pila (también conocido como backtrace). ) del programa, que proporcionará una lista de llamadas a funciones que condujeron a un determinado punto en la ejecución del programa (utilizando esta información, tanto los desarrolladores como los administradores del sistema pueden descubrir qué salió mal en caso de un fallo).

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

2. Buscar repositorio de paquetes instalados

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

find-repos-of-install httpd postfix dovecot

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

3. Eliminar paquetes duplicados u huérfanos

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 núcleos 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. Sólo afectará a los paquetes de kernel antiguos (versiones anteriores a la que se está ejecutando actualmente) que ya no son necesarios.

4. Descubra la lista de dependencias de paquetes

repo-graph devuelve una lista completa de dependencias de paquetes en formato punto 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 --repoid=.

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

repo-graph --repoid=updates | less

En el comando anterior, enviamos la salida de repo-graph a less para una visualización más fácil, pero también puedes redirigirlo a un archivo local para su posterior inspección:

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

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

5. Lista de verificación de dependencias no resueltas

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

6. Cómo verificar los paquetes más nuevos o más antiguos en un directorio

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.

7. Consultar repositorios de Yum para obtener información sobre el paquete

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 y más).

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

which htop
rpm -qa | grep htop

Ahora supongamos 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

8. Vuelque todos los paquetes RPM instalados en un archivo zip

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

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

yum-debug-dump

Como ocurre 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

9. Descarga de RPM de origen desde los repositorios de Yum

yumdownloader descarga archivos RPM fuente de los repositorios, incluidas sus dependencias. Útil para crear un repositorio de red al que se puede acceder desde otras máquinas con acceso restringido a Internet.

Yumdownloader le permite no solo descargar los RPM binarios sino también los fuente (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 interruptor --resolve junto con yumdownloader:

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

10. Sincronizar un repositorio remoto de Yum con un directorio local

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 se descargan 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 conservar 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.

11. Arreglar transacciones Yum incompletas o canceladas

yum-complete-transaction es parte del programa yum-utils que detecta 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 aparece un mensaje de advertencia que dice lo siguiente:

Quedan transacciones pendientes. Podrías considerar ejecutar yum-complete-transaction primero para finalizarlos.

Para corregir dichos mensajes de advertencia y resolver dicho problema, el comando yum-complete-transaction aparece para completar las transacciones incompletas, encuentra aquellas transacciones yum incompletas o abortadas en transaction-all* archivos y transaction-done* que se pueden encontrar en el 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 lo sugiere uno de nuestros lectores habituales, el Sr. Tomás 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 de manual (man yum-utils).

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

Si se toma un minuto para consultar la página de manual de yum-utils, tal vez encuentre otra herramienta que le gustaría que cubramos 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 mediante el formulario de comentarios a continuación.