Estoy tratando de instalar un paquete RPM de terceros en RHEL5 que depende de la versión 3.4 de sqlite. Según Yum ya tengo 3.3.6 instalado.
¿Hay alguna manera de enumerar los paquetes instalados que dependen de sqlite 3.3.6?
package-management
rhel
yum
Rico
fuente
fuente
repoquery
se puede utilizar para generar una estructura de árbol agradable de todos los paquetes que requieren un paquete en particular, por ejemplo:repoquery --pkgnarrow=installed --tree-whatrequires sqlite
--installed
es una opción pararepoquery
pero no es válida pararpm
.Responder
Explicaciones
rpm -q --whatrequires sqlite
solo informa dependencias de los nombres de paquetes.Por el contrario,
repoquery
actúa de la siguiente manera (de las páginas de manual):Ejemplo
Tomemos el paquete
libdb
.Ningún paquete depende
libdb
, por lo que deberíamos poder eliminarlo sin problemas. Sin embargo...Como puede ver, algunos otros paquetes no dependían directamente del paquete, sino del archivo
libdb-5.3.so()(64bit)
proporcionado por él.Finalmente, aquí está la lista real de paquetes dependiendo de
libdb
:fuente
Para dnf (nueva versión de yum) puede intentar con el comando repoquery wrapper:
Si no está disponible, puede instalarlo con el comando:
fuente
--installed --recursive
al final para que solo devuelva lo que está realmente instalado y no se extraiga de los repositoriosTambién puedes probar este comando.
Obtuve este comando de ServerFault y también de The Fedora Forums.
fuente
Creo que lo que realmente quiere saber es "cuáles son los paquetes que requieren sqlite-3.3.6, pero no estarán contentos con sqlite-3.4.z" ... y la única buena manera de descubrirlo es intentalo. Me gusta:
fuente
Como dijo Wes Hardaker , un buen método incorporado es mediante el uso
rpm -q --whatrequires <package>
. La cuestión es querpm
funciona con capacidades para la resolución de dependencias, no solo con paquetes, como por ejemplodpkg
, en la familia Debian / Ubuntu de distribuciones de Linux. Como otros han señalado, simplemente hacerrpm -q --whatrequires sqlite
no cuenta toda la historia, de ahí que algunos sugieran usarrepoquery
.repoquery
, sin embargo, no está instalado de forma predeterminada en RHEL / CentOS 7 minimal (¿quizás también en el escritorio?), por lo que puede no estar disponible para todos.Un usuario puede hacer
rpm -q --provides <pkgname>
para ver todas las capacidades que proporciona un paquete, luego usarrpm -q --whatrequires <capability>
para ver qué paquetes instalados requieren esa capacidad. Esta información se puede consultar de manera sucinta utilizando una línea BASH (separada aquí en dos líneas de longitud):Esto solo utiliza opciones integradas en
rpm
sí mismo, por lo que no requiere instalar ningún paquete adicional (por ejemplo,yum-utils
en CentOS 7, que es el paquete que contienerepoquery
).fuente