rpm que proporciona un archivo

rpm que proporciona un archivo

¿Cuál es el comando para enumerar qué rpms podrían proporcionar un archivo en particular: los rpm que proporcionan archivos ya instalados o los rpms que podrían proporcionar archivos que no están instalados?

Respuesta1

Para archivos/paquetes ya instalados:

[jb@smokey ~]$ rpm -qf /etc/sudoers
sudo-1.6.9p13-8.fc9.x86_64

Para archivos y paquetes aún no instalados:

[jb@smokey ~]$ yum whatprovides "/etc/sudoers"
sudo-1.6.9p13-8.fc9.x86_64: permite acceso root restringido para usuarios específicos
Repositorio: actualizaciones-nueva clave
Emparejado de:
Nombre de archivo: /etc/sudoers  

sudo-1.6.9p13-4.fc9.x86_64: permite acceso root restringido para usuarios específicos
Repositorio: fedora
Emparejado de:
Nombre de archivo: /etc/sudoers

sudo-1.6.9p13-8.fc9.x86_64: permite acceso root restringido para usuarios específicos
Repositorio: instalado
Emparejado de:
Otro: Proporciona coincidencia: /etc/sudoers

Tenga en cuenta que "yum whatprovides " es una coincidencia de patrón, por lo que si no está seguro de dónde residiría el archivo que está buscando en la estructura del directorio, simplemente rodéelo entre comillas y asteriscos:

mmm lo que proporciona "*foo*"

De manera similar, si estás seguro de que lo que estás buscando es un binario, puedes hacer:

mmm lo que proporciona "*bin/foo"

Respuesta2

No conozco archivos que aún no estén instalados, pero para un archivo que ya está instalado puedes usar rpm -qif:

rpm -qif /bin/ls
Nombre: coreutils Reubicaciones: (no reubicable)
Versión: 5.97 Proveedor: Red Hat, Inc.
Lanzamiento: 23.el5 Fecha de compilación: lunes 13 de julio de 2009 04:21:27 a.m. MDT
Fecha de instalación: viernes 11 de septiembre de 2009, 04:46:01 a. m. MDT Host de compilación: hs20-bc1-7.build.redhat.com
Grupo: Entorno del sistema/RPM de origen base: coreutils-5.97-23.el5.src.rpm
Tamaño: 9053874 Licencia: GPLv2+
Firma: DSA/SHA1, martes 28 de julio de 2009, 03:42:40 a.m. MDT, ID de clave 5326810137017186
Empaquetador: Red Hat, Inc.
URL:
Resumen: Las utilidades principales de GNU: un conjunto de herramientas comúnmente utilizadas en scripts de shell
Descripción :
Estas son las utilidades principales de GNU. Este paquete es la combinación de
los antiguos paquetes GNU fileutils, sh-utils y textutils.
Si tienes el RPM descargado puedes consultar para ver qué se va a instalar:
rpm -qilp ./Server/jzlib-1.0.7-4jpp.1.i386.rpm
advertencia: ./Server/jzlib-1.0.7-4jpp.1.i386.rpm: Firma DSA del encabezado V3: NOKEY, ID de clave 37017186
Nombre: jzlib Reubicaciones: (no reubicable)
Versión: 1.0.7 Proveedor: Red Hat, Inc.
Lanzamiento: 4jpp.1 Fecha de compilación: martes 8 de agosto de 2006 12:10:03 p.m. MDT
Fecha de instalación: (no instalado) Host de compilación: hs20-bc1-6.build.redhat.com
Grupo: Desarrollo/Bibliotecas/Java Fuente RPM: jzlib-1.0.7-4jpp.1.src.rpm
Tamaño: 280436 Licencia: estilo BSD
Firma: DSA/SHA1, jueves 18 de enero de 2007, 08:49:50 a.m. MST, ID de clave 5326810137017186
Empaquetador: Red Hat, Inc.
URL:
Resumen: Reimplementación JZlib de zlib en Java puro
Descripción :
El zlib está diseñado para ser un software gratuito, de uso general y sin cargas legales.
-- es decir, no cubierto por ninguna patente -- compresión de datos sin pérdidas
biblioteca para su uso en prácticamente cualquier hardware y sistema operativo.
El zlib fue escrito por Jean-loup Gailly (compresión) y Mark Adler.
(descompresión).
/usr/lib/gcj/jzlib/jzlib-1.0.7.jar.db
/usr/lib/gcj/jzlib/jzlib-1.0.7.jar.so
/usr/share/doc/jzlib-1.0.7
/usr/share/doc/jzlib-1.0.7/LICENCIA.txt
/usr/share/java/jzlib-1.0.7.jar
/usr/share/java/jzlib.jar
puede omitir "-i" de las opciones si no le interesa ver toda la información sobre las RPM.

Respuesta3

En repositorios basados ​​en yum, puedes probar algo como yum provides */filename

Respuesta4

Si no desea (o no puede) usar yum (por ejemplo, en una máquina fuera de línea), puede buscar dentro de RPM no instalados haciendo

# rpm -qp --filesbypkg *rpms-to-search-in* | grep *file-to-search-for*

Esto puede llevar algún tiempo, así que tenga paciencia al buscar entre *.rpm en un repositorio grande, como un DVD de instalación, por ejemplo. Pero, a diferencia de "-qpl", "-qp --filesbypkg" listará tanto el archivo como el RPM al que pertenece, por ejemplo:

# rpm -qpl p*.rpm|grep libpq.so.4
/usr/lib/libpq.so.4
/usr/lib64/libpq.so.4

# rpm -qp --filesbypkg p*.rpm|grep libpq.so.4
postgresql-libs          /usr/lib/libpq.so.4
postgresql-libs          /usr/lib64/libpq.so.4

en cuyo caso el aparente duplicado se debe a la presencia de paquetes i386 y x86_64 (que se hace evidente a partir de la cadena "lib64").

información relacionada