10.2. Consultar repositorios con repoquery
repoquery es un programa para consultar información en los repositorios YUM, éstas son similares a las consultas rpm.
repoquery es una herramienta YUM que tiene un conjunto de opciones profundas y complicadas. Está pensada como una herramienta análoga a rpm -q
pero ejecutada sobre los repositorios remotos, esto explica el por qué de lo complicado y profundo. A continuación se muestran algunos usos comunes.
Tal vez la consulta más frecuente es preguntar sobre un paquete en particular, a diferencia de rpm -qi <nombre-de-paquete\>
, repoquery
no requiere que el paquete esté instalado.
$ repoquery -i ruby-gtk2
Name : ruby-gtk2
Version : 1.0.3
Release : 2.fc16
Architecture: x86_64
Size : 4753
Packager : Fedora Project
Group : Development/Languages
URL : http://ruby-gnome2.sourceforge.jp/
Repository : fedora
Summary : Non-Gem support package for gtk2
Source : rubygem-gtk2-1.0.3-2.fc16.src.rpm
Description :
This package provides non-Gem support for gtk2.
Por omisión repoquery actúa sobre los repositorios configurados y habilitados en la configuración yum. Puede habilitar/deshabilitar repositorios al vuelo usando las opciones --enablerepo=repoid
y --disablerepo=repoid
. Ocasionalmente sólo se requiere consultar un repositorio en particular, use en esos casos la opción --repoid=repoid
. En este último caso sólo ése repositorio será considerado sin importar la configuración de yum.
Ocurre con cierta frecuencia que se desea consultar un repositorio no configurado aún. repoquery maneja esta situación con el uso de la opción --repofrompath
:
$ repoquery --repofrompath=nombredelrepo,http://ruta/al/repo --repoid=nombredelrepo -q -a
repoquery puede trabajar sobre cualquier arquitectura, por omisión utiliza las arquitecturas del sistema sobre el que está siendo ejecutado. Sin embargo se pueden especificar las arquitecturas utilizando la opción --archlist
.
Sólo paquetes i686 en el repositorio 'fedora':
$ repoquery --archlist=i386 --repoid=fedora -a | head
chealpix-0:2.13a-2.fc14.i386
chealpix-devel-0:2.13a-2.fc14.i386
elilo-0:3.6-9.i386
frysk-0:0.4-30.fc15.i386
frysk-devel-0:0.4-30.fc15.i386
frysk-gnome-0:0.4-30.fc15.i386
gnome-applet-cpufire-0:1.6-3.fc14.i386
healpix-0:2.13a-2.fc14.i386
healpix-c++-0:2.13a-2.fc14.i386
healpix-c++-devel-0:2.13a-2.fc14.i386
Sólo paquetes i686 e i386 en el repositorio 'fedora':
$ repoquery --archlist=i686,i386 --repoid=fedora -a
0xFFFF-0:0.3.9-5.fc15.i686
389-admin-0:1.1.16-1.fc15.i686
389-adminutil-0:1.1.13-2.fc15.i686
389-adminutil-devel-0:1.1.13-2.fc15.i686
389-ds-base-0:1.2.8.2-1.fc15.i686
389-ds-base-devel-0:1.2.8.2-1.fc15.i686
389-ds-base-libs-0:1.2.8.2-1.fc15.i686
389-dsgw-0:1.1.6-2.fc15.i686
3Depict-0:0.0.4-2.fc15.i686
3proxy-0:0.6.1-11.fc15.i686
...
ealpix-0:2.13a-2.fc14.i386
chealpix-devel-0:2.13a-2.fc14.i386
elilo-0:3.6-9.i386
frysk-0:0.4-30.fc15.i386
frysk-devel-0:0.4-30.fc15.i386
frysk-gnome-0:0.4-30.fc15.i386
...
En la salida anterior no están ordenados los resultados, los resultados i386 fueron insertados en esa posición de forma consecutiva para resaltar su inclusión en listado.
Sólo paquetes fuente srpms:
$ repoquery --archlist=src --repoid=fedora-source -a | head
0xFFFF-0:0.3.9-5.fc15.src
389-admin-0:1.1.16-1.fc15.src
389-admin-console-0:1.1.7-2.fc15.src
389-adminutil-0:1.1.13-2.fc15.src
389-console-0:1.1.4-2.fc15.src
389-ds-0:1.2.1-2.fc15.src
389-ds-base-0:1.2.8.2-1.fc15.src
389-ds-console-0:1.2.5-1.fc15.src
389-dsgw-0:1.1.6-2.fc15.src
3Depict-0:0.0.4-2.fc15.src
Listar el contenido de un paquete dado.
$ repoquery --list iftop
/usr/sbin/iftop
/usr/share/doc/iftop-0.17
/usr/share/doc/iftop-0.17/COPYING
/usr/share/doc/iftop-0.17/ChangeLog
/usr/share/doc/iftop-0.17/README
/usr/share/doc/iftop-0.17/TODO
/usr/share/man/man8/iftop.8.gz
Listar paquetes propietario de un archivo instalado dado.
$ repoquery --file /usr/bin/yum
yum-0:3.2.25-1.fc12.noarch
yum-0:3.2.27-3.fc12.noarch
Uso de repoquery limitándolo a los paquetes instalados.
$ repoquery --pkgnarrow=installed --whatrequires --alldeps lsof
rkhunter-0:1.3.6-7.fc12.noarch
rkhunter-0:1.3.4-8.fc12.noarch
libguestfs-1:1.0.75-1.fc12.i686
libguestfs-1:1.2.7-1.fc12.1.i686
Si necesita averiguar cuáles srpms tienen un requerimiento de construcción sobre un paquete en particular, ejecute:
$ repoquery --archlist=src --repoid=fedora-source --whatrequires lsof
libguestfs-1:1.0.75-1.fc12.src
Si necesita averiguar el árbol de proveedores de dependencias de un paquete dado, ejecute:
$ repoquery --requires --output=ascii-tree fwsnort
fwsnort-1.6.1-1.fc16.noarch [cmd line]
\_ bash-4.2.20-1.fc16.x86_64 [1: /bin/sh]
| \_ glibc-2.14.90-19.i686 [1: rtld(GNU_HASH)]
| | \_ basesystem-10.0-5.fc16.noarch [1: basesystem]
| | | \_ filesystem-2.4.44-1.fc16.x86_64 [1: filesystem]
| | | | \_ setup-2.8.36-2.fc16.noarch [1: setup]
| | | \_ setup-2.8.36-2.fc16.noarch [1: setup]
| | \_ glibc-common-2.14.90-19.x86_64 [1: glibc-common = 2.14.90-19]
| | | \_ bash-4.2.20-1.fc16.x86_64 [2: /bin/bash, /bin/sh]
| | | \_ glibc-2.14.90-19.i686 [2: glibc = 2.14.90-19, rtld(GNU_HASH)]
... ...
... ...
| \_ perl-threads-shared-1.37-190.fc16.x86_64 [2: perl(threads::shared), perl(threads::shared) >= 1.21]
| | \_ glibc-2.14.90-19.i686 [1: rtld(GNU_HASH)]
| | \_ glibc-2.14.90-19.x86_64 [6: libc.so.6()(64bit), libc.so.6(GLIBC_2.2.5)(64bit), libpthread.so.0()(64bit), libpthread.so.0(GLIBC_2.2.5)(64bit), libpthread.so.0(GLIBC_2.3.2)(64bit), rtld(GNU_HASH)]
| | \_ 4:perl-5.14.2-190.fc16.x86_64 [4: perl = 4:5.14.2-190.fc16, perl >= 5.008, perl(strict), perl(warnings)]
| | \_ perl-Scalar-List-Utils-1.23-190.fc16.x86_64 [1: perl(Scalar::Util)]
\_ perl-IPTables-Parse-0.7-9.fc16.noarch [1: perl(IPTables::Parse)]
| \_ 4:perl-5.14.2-190.fc16.x86_64 [7: perl >= 5.006, perl(:MODULE_COMPAT_5.14.0), perl(Carp), perl(POSIX), perl(strict), perl(vars), perl(warnings)]
\_ perl-Net-IPv4Addr-0.10-11.fc16.noarch [1: perl(Net::IPv4Addr)]
| \_ 4:perl-5.14.2-190.fc16.x86_64 [6: /usr/bin/perl, perl(:MODULE_COMPAT_5.14.1), perl(Carp), perl(Getopt::Long), perl(strict), perl(vars)]
\_ perl-PathTools-3.33-190.fc16.x86_64 [1: perl(Cwd)]
| \_ glibc-2.14.90-19.i686 [1: rtld(GNU_HASH)]
| \_ glibc-2.14.90-19.x86_64 [5: libc.so.6()(64bit), libc.so.6(GLIBC_2.2.5)(64bit), libc.so.6(GLIBC_2.3.4)(64bit), libc.so.6(GLIBC_2.4)(64bit), rtld(GNU_HASH)]
| \_ 4:perl-5.14.2-190.fc16.x86_64 [5: perl = 4:5.14.2-190.fc16, perl(Exporter), perl(File::Basename), perl(strict), perl(vars)]
El árbol es bien extenso, si quiere limitar la profundidad puede hacerlo especificando la opción --level
como se muestra a continuación.
$ repoquery --requires --output=ascii-tree --level 1 fwsnort
fwsnort-1.6.1-1.fc16.noarch [cmd line]
\_ bash-4.2.20-1.fc16.x86_64 [1: /bin/sh]
\_ iptables-1.4.12-2.fc16.i686 [1: iptables]
\_ iptables-1.4.12-2.fc16.x86_64 [1: iptables]
\_ logrotate-3.8.0-3.fc16.x86_64 [1: logrotate]
\_ 4:perl-5.14.2-190.fc16.x86_64 [9: /usr/bin/perl, perl(:MODULE_COMPAT_5.14.1), perl(Data::Dumper), perl(File::Copy), perl(File::Path), perl(Getopt::Long), perl(IO::Socket), perl(Sys::Hostname), perl(strict)]
\_ perl-IPTables-Parse-0.7-9.fc16.noarch [1: perl(IPTables::Parse)]
\_ perl-Net-IPv4Addr-0.10-11.fc16.noarch [1: perl(Net::IPv4Addr)]
\_ perl-PathTools-3.33-190.fc16.x86_64 [1: perl(Cwd)]
Si necesita una lista formateada de paquetes, con su url y el repositorio de donde proviene puede usar repoquery así:
$ repoquery --qf="%{name} %{repoid} %{location}" pkg1 pkg2 pkg3
$ repoquery --qf="%{name} %{repoid} %{location}" ruby-gtk2 ruby
ruby updates http://download.fedoraproject.org/pub/fedora/linux/updates/13/x86_64/ruby-1.8.6.399-6.fc13.x86_64.rpm
ruby-gtk2 updates http://download.fedoraproject.org/pub/fedora/linux/updates/13/x86_64/ruby-gtk2-0.90.2-1.fc13.x86_64.rpm
Abajo otro ejemplo de uso del formato de consulta con las licencias.
$ repoquery --qf "%{ui_nevra} %{license}" rpm*
rpm-4.9.0-9.fc15.x86_64 GPLv2+
rpm-apidocs-4.9.0-9.fc15.noarch GPLv2+
rpm-build-4.9.0-9.fc15.x86_64 GPLv2+
rpm-build-libs-4.9.0-9.fc15.i686 GPLv2+ and LGPLv2+ with exceptions
rpm-build-libs-4.9.0-9.fc15.x86_64 GPLv2+ and LGPLv2+ with exceptions
rpm-cron-4.9.0-9.fc15.noarch GPLv2+
...
Consulta de paquetes por patrón a un repositorio específico:
$ repoquery --repoid=updates-testing fw*
fwsnort-0:1.0.6-7.fc13.noarch
Para más detalles vea la página del manual al respecto, man repoquery
.