GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo instalar/eliminar/consultar/actualizar paquetes RPM en Linux (hoja de referencia)

Mantenimiento del software mediante RPM (Administrador de paquetes de Red Hat)

RPM es un potente administrador de software que se puede utilizar para crear, instalar, consultar, verificar, actualizar y desinstalar paquetes de software individuales. Un paquete RPM consta de un archivo de archivos e información del paquete, como el nombre, la versión, una descripción e información sobre las dependencias de otros paquetes RPM.

RPM es más que una herramienta específica de Red Hat. Muchas otras distribuciones modernas, como Ubuntu y SuSE, también usan RPM. Los beneficios de usar RPM incluyen:

  • Distribución, instalación, actualización y eliminación de software simplificadas
  • Garantiza que:
    • el software de requisito previo está instalado en el sistema.
    • las versiones del software de requisito previo siguen siendo compatibles.
    • Los archivos de configuración modificados localmente no se borran cuando se actualiza el RPM.
    • Los archivos de configuración modificados localmente se guardan con el sufijo ".rpmsave" si el paquete se elimina posteriormente.
  • Permite la certificación de que el software instalado no ha sido alterado, modificado, corrompido o cambiado de ninguna manera.

RPM mantiene información sobre los paquetes instalados bajo el "/var/lib/rpm ” directorio.

Los componentes de la herramienta RPM son:

  • Una base de datos personalizada que contiene información sobre todo el software instalado en el sistema, recopilada de los RPM individuales.
  • Un ejecutable "/bin/rpm".
  • Repositorios accesibles por Internet de paquetes RPM disponibles.

Tipos de paquetes RPM

Los paquetes RPM vienen en dos categorías:fuente y binario .

Siempre se puede reconocer un RPM de origen porque el nombre del archivo termina con la cadena “.src.rpm “. En un RPM de origen no solo se encuentran los archivos de código fuente del programa original, sino también los scripts que permiten que el código se vuelva a compilar automáticamente, se instale automáticamente y se elimine automáticamente. No hay archivos ejecutables de usuario final en un RPM de origen. Por lo general, solo los desarrolladores están interesados ​​en un RPM de origen.

Un RPM binario contiene los componentes de usuario final de un RPM. Los nombres de archivo RPM binarios identifican la arquitectura de host para el contenido. Por ejemplo, el archivo RPM binario:

bash-3.1-16.1.x86_64.rpm

Contiene archivos que solo se pueden usar en una CPU de arquitectura Intel X86 de 64 bits. Otros valores de arquitectura comunes incluyen "i386" para hosts Intel de 32 bits. Algunos RPM binarios pueden instalarse en cualquier arquitectura de CPU porque sus archivos funcionarán en cualquier host; un ejemplo de estos paquetes “.noarch.rpm” es el RPM “tzdata” que contiene información sobre las zonas horarias del mundo. Para actualizar su sistema con la última versión de un paquete, necesitará el RPM binario más reciente.

Esquema de nombres RPM

Cada paquete RPM está contenido en un solo archivo. El nombre del archivo tiene varios campos para identificar completamente el contenido del paquete. Si bien las herramientas RPM en sí mismas no dependen del nombre del archivo en sí, debe comprender la convención del nombre del archivo para ayudarlo a identificar o descargar el paquete adecuado. Aquí hay un nombre de archivo RPM de ejemplo:

bash-3.1-16.1.x86_64.rpm

Este RPM es para el shell BASH (“/bin/bash”). El nombre del archivo se compone de varias partes:

[name]-[version]-[release].[arch].rpm

donde:

    [nombre] es el nombre del programa o paquete. El [nombre] generalmente lo asigna el autor del programa. En nuestro ejemplo, los desarrolladores decidieron nombrar su producto "bash" por razones que les parecieron divertidas.
  • versión] identifica qué edición del software contiene este RPM. El número de [versión] es asignado por el autor del programa. El uso del número de permite determinar qué versión de las fuentes del autor se utilizaron para generar el RPM.
  • [lanzamiento] proporciona el número de edición del propio archivo RPM y no la versión de los archivos fuente del autor. Se puede emitir un RPM actualizado para proporcionar una versión parcheada del software original del autor. No es necesario que el parche provenga del desarrollador original, por lo que la [versión] de RPM se incrementa en lugar de la [versión].
  • [arco] describe el contenido del RPM e indica si este archivo contiene la fuente del producto (un ".src.rpm"), archivos independientes de la arquitectura (un ".noarch.rpm") o archivos que solo se pueden instalar en un host en particular (un ".sh.rpm" funcionará solo en un procesador integrado STRONGHOLD).
Nota :La [versión] está controlada por el autor original y el [lanzamiento] está controlado por quien construyó el RPM.

Comprender las versiones de RPM

Los campos RPM [versión] y [lanzamiento] no siempre son estrictamente numéricos y pueden contener otros caracteres además de los dígitos ordinarios. Es común ver una versión "10" y una versión "10a" del mismo paquete. A veces, elegir la versión más reciente puede ser complicado. Así es como RPM compara los números de versión y lanzamiento internamente:

1. Elimine el prefijo [nombre] y el sufijo “.[arch].rpm”. Por ejemplo:
“bash-3.1-16.1.x86_64.rpm” se convierte en “3.1-16.1” y “bash-3.1-16.5a.1.x86_64.rpm” se convierte en “3.1-16.5a.1”

2. Compare las cadenas restantes carácter por carácter, de izquierda a derecha hasta que encuentre un dígito. Si los caracteres difieren, el carácter que aparezca más tarde en la secuencia de clasificación es el RPM más reciente.

3. Cuando encuentre un dígito, convierta toda la secuencia de dígitos en un solo número binario. En nuestro ejemplo, los dos caracteres "16" se combinan en un valor de dieciséis (16). Los valores binarios resultantes se comparan y el valor mayor es el RPM más reciente. Por lo tanto, un RPM con una [versión] de "0010" es más reciente que uno con una [versión] de "9".

Los pasos 2 y 3 se repiten según sea necesario hasta que se produzca una diferencia.

Instalación y eliminación de archivos

Nota :Por lo general, solo se puede instalar una o de un RPM a la vez.

Las versiones posteriores generalmente se instalan usando el "-U ” (actualizar) función RPM en lugar de “-i ” Función RPM. Las excepciones comunes a la regla de un solo RPM son los RPM del kernel. Un sistema comúnmente tiene instaladas varias versiones de kernels; RPM tiene una lista de los RPM que pueden tener varias versiones instaladas. Para eliminar una versión cuando hay varias instaladas, debe especificar completamente el nombre y la versión del paquete.

En la arquitectura x86_64, es común tener instalados los paquetes RPM “.i386” de 32 bits y “.x86_64” de 64 bits para admitir aplicaciones de 32 y 64 bits. Normalmente, RPM no muestra la arquitectura de un paquete en una consulta, pero puede mostrarla manualmente.

Instalación y eliminación

# rpm -i --install (install new RPM; error if already installed)
# rpm -U --upgrade (delete existing RPM, if any; install new)
# rpm -F --freshen (update RPM only if package already installed)
# rpm -e --erase (remove, delete, expunge)

Opciones comunes
Salida:-v (detallado:nombre de archivo), -h (hash)
Condiciones previas:–nodeps, –replacefiles, –force (¡¡TENGA CUIDADO AQUÍ!)
Reubicación:–excludepath, –prefix, –relocate, –badreloc, –root
Compatibilidad con URL:ftp, http

Ejemplos:

# rpm -ivh binutils-2.11.90.0.8-12.i386.rpm
# rpm -Uvh finger-0.17-9-i386.rpm
# rpm -Fvh ftp://updates.redhat.com/current/i386/*.rpm
# rpm -e diffutils
# rpm -e kernel-enterprise-2.4.9-e.12

Sugerencia :Nunca, jamás, use la opción “-U” para instalar un nuevo kernel RPM. La función de actualización “-U” primero elimina el RPM actual del sistema y luego intenta instalar el nuevo RPM. Cualquier problema que impida la instalación del nuevo RPM hará que el sistema no se pueda iniciar. Esto no es lo que desea, así que siempre use el interruptor "-i" para instalar un RPM del kernel.

Consultas (Paquetes y/o Información)

Utilice una consulta para obtener información sobre los paquetes instalados. Puede consultar todos los paquetes instalados o un solo paquete instalado. También puede averiguar qué RPM proporciona un archivo en particular.

# rpm -q [packages] [information]
# rpm -qa (all installed packages)
# rpm -q package_name
# rpm -qf (filename)
# rpm -qp (package filename)

Información
predeterminado (nombre del paquete)
-i :información general
-l :lista de archivos

Ejemplos:

# rpm -qa
# rpm -q kernel -i (information)
# rpm -q kernel -l (files contained in package)
# rpm -q kernel --requires (prereqs)
# rpm -q kernel --provides (capabilities provided by package)
# rpm -q kernel --scripts (scripts run during installation and removal)
# rpm -q kernel --changelog (revision history)
# rpm -q kernel -queryformat format (rpm --querytags for list of options)

Sugerencia :Al buscar un paquete RPM en particular cuando no se conoce el nombre exacto, un canal de comando como:

$ rpm -qa | grep foo

se usa comúnmente. Las versiones posteriores de la herramienta RPM permiten que esto se haga de manera sucinta como:

$ rpm -qa '*foo*'

Consultas – Verificación (Archivos)

La base de datos de RPM contiene muchos atributos sobre todos y cada uno de los archivos instalados por un RPM. Puede verificar el estado actual del archivo con la información catalogada por RPM cuando se instaló el paquete.

# rpm -V package_name
# rpm -Va (verify all)
# rpm -Vf (filename)
# rpm -Vp (package filename)
Nota :Muchas distribuciones de Linux incluyen un RPM de "preenlace" que intenta reducir el tiempo necesario para iniciar una aplicación usando una biblioteca compartida (la mayoría de las aplicaciones usan al menos una biblioteca compartida y potencialmente docenas) agregando información especial directamente en el archivo de programa de una aplicación.

Agregar esta información hace que las aplicaciones se inicien más rápido, pero los cambios en el archivo invalidan la mayoría de los atributos del archivo en la base de datos RPM, como la última fecha de modificación del archivo, el tamaño del archivo y la suma de verificación MD5 del archivo.

Consultas – Verificación (Paquetes)

# rpm -import /mnt/cdrom/RPM-GPG-KEY
# rpm -q gpg-pubkey
# rpm --checksig m4-1.4.1-11.i386.rpm

Ejemplos:

# rpm -qf /path/filename (what package owns filename)
# rpm -qf /path/filename -i (what does it do)
# rpm -qp m4-1.4.1-11.i386.rpm -l (files in m4)
# rpm -qp m4-1.4.1-11.i386.rpm --requires (prereqs needed to install m4)
# rpm -q --whatprovides glibc.so (what package provides requisite library)

Reparar la base de datos RPM

La herramienta RPM utiliza su propia implementación de base de datos personalizada para contener su información. A veces esa base de datos puede corromperse; los síntomas incluyen reclamos de que falta un paquete RPM instalado; o los intentos de actualizar un RPM simplemente se cuelgan. Si su base de datos RPM está bloqueada o dañada, puede intentar repararla con estos comandos. No se garantiza que este proceso funcione.

Debe iniciar sesión con privilegios de superusuario (también conocido como "root") para realizar estos pasos. Los comandos se pueden copiar y pegar directamente en una ventana de terminal raíz.

1. Asegúrese de que no queden procesos RPM ejecutándose en su sistema. Utilice el comando ps para identificarlos. Use el comando matar para terminar cualquier proceso de "rpm" que encuentre; puede ser necesario un "matar -9".

2. Elimine los archivos de bloqueo que utiliza RPM:

# rm -f /var/lib/rpm/__db*

3. Si estaba experimentando un comando de "rpm" colgado, inténtelo de nuevo. Si funciona, estás acabado. Si no es así, vuelva a realizar los pasos 1 y 2. Luego continúe con el siguiente paso.

4. Haz una copia de seguridad de tu base de datos RPM:

# cd /var/lib
# mkdir rpm-backup
# rsync -av ./rpm/. ./rpm-backup/.

5. Reconstruya su base de datos RPM:

# rpm -vv --rebuilddb > /tmp/rpmrebuilddb.log 2>&1

6. Vuelva a intentar su comando RPM fallido.


Linux
  1. Cómo construir paquetes rpm

  2. Cómo habilitar Snap en Linux Mint 20 e instalar paquetes Snap

  3. Cómo instalar, eliminar y actualizar software en Arch Linux

  4. Cómo instalar paquetes desde un repositorio específico en Linux

  5. Ejemplos de comandos RPM para consultar, instalar, eliminar y actualizar paquetes

Eliminar paquetes instalados en cierta fecha/hora en Linux

Cómo instalar software desde la fuente en Linux

Cómo instalar y quitar software en Manjaro Linux

Cómo instalar el software Arduino (IDE) en Linux

Cómo instalar software de Windows en Linux con Bottles

Cómo instalar wget en CentOS 7 con una hoja de referencia de wget