rpm que proporciona un archivo

11

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

David Nehme
fuente

Respuestas:

10

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 raíz restringido para usuarios específicos
Repo: updates-newkey
Emparejado de:
Nombre de archivo: / etc / sudoers  

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

sudo-1.6.9p13-8.fc9.x86_64: permite acceso raíz restringido para usuarios específicos
Repo: 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 viviría el archivo que está buscando en la estructura del directorio, simplemente rodee con comillas y asteriscos:

mmm lo que proporciona "* foo *"

Del mismo modo, si está seguro de que lo que está buscando es un binario que puede hacer:

mmm lo que proporciona "* bin / foo"
cagenut
fuente
5

No sé acerca de los archivos que ya no están instalados, pero para un archivo que ya está instalado puede usar rpm -qif:

rpm -qif / bin / ls
Nombre: reubicaciones de coreutils: (no reubicable)
Versión: 5.97 Vendedor: Red Hat, Inc.
Lanzamiento: 23.el5 Fecha de compilación: Lun 13 Jul 2009 04:21:27 AM MDT
Fecha de instalación: vie 11 sep 2009 04:46:01 AM MDT Build Host: 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 AM MDT, clave ID 5326810137017186
Empaquetador: Red Hat, Inc. 
URL:
Resumen: las utilidades principales de GNU: un conjunto de herramientas comúnmente utilizadas en los scripts de shell
Descripción:
Estas son las utilidades principales de GNU. Este paquete es la combinación de
los viejos paquetes GNU fileutils, sh-utils y textutils.
Si tiene el RPM descargado, puede 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: encabezado V3 DSA firma: NOKEY, clave ID 37017186
Nombre: reubicaciones jzlib: (no reubicable)
Versión: 1.0.7 Vendedor: Red Hat, Inc.
Lanzamiento: 4jpp.1 Fecha de compilación: martes 08 agosto 2006 12:10:03 PM MDT
Fecha de instalación: (no instalado) Build Host: hs20-bc1-6.build.redhat.com
Grupo: Desarrollo / Bibliotecas / Java Source RPM: jzlib-1.0.7-4jpp.1.src.rpm
Tamaño: 280436 Licencia: estilo BSD
Firma: DSA / SHA1, jue 18 de enero de 2007 08:49:50 AM MST, clave ID 5326810137017186
Empaquetador: Red Hat, Inc. 
URL: 
Resumen: JZlib re-implementación de zlib en Java puro
Descripción:
El zlib está diseñado para ser gratuito, de uso general, sin gravámenes legales
- es decir, no está cubierto por ninguna patente - compresión de datos sin pérdida
biblioteca para usar 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/LICENSE.txt
/usr/share/java/jzlib-1.0.7.jar
/usr/share/java/jzlib.jar
puede omitir el "-i" de las opciones si no le interesa ver toda la información sobre el RPM.

salparadise
fuente
2

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

Trey
fuente
1

afaik, no es posible con rpm puras. rpm proporciona esto solo para paquetes instalados con opción --whatprovides.

cuando pueda usar yum, intente yum provides <filename>buscar en el repositorio.

cristiano
fuente
1

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 cuando busque entre * .rpm en un repositorio grande, como un DVD de instalación, por ejemplo. Pero, a diferencia de "-qpl", "-qp --filesbypkg" enumerará 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").

Tulio Silva
fuente
-3

Me temo que no estoy seguro de cómo hacerlo con RPMS, pero con Debian y Ubuntu puedes usar el programa apt-file

Rory
fuente