Icono del sitio Un lugar en el mundo…

Paquetes RPM, archivos .repo y yum

Lejos han quedado ya los tiempos en que se usaba la expresión «infierno de las dependencias» o que había que ir por ahí buscando herramientas de terceros o recurrir a rebuscados trucos para gestionar instalaciones y actualizaciones en una distribución Linux con paquetes rpm. Hoy en día la combinación rpm/yum de Fedora, Red Hat, CentOS y otras derivadas tiene poco (o nada) que envidiarle a la pareja dpkg/apt-get de Debian & co. En esta entradilla vamos a dar un pequeño repaso a las opciones más comunes y a alguna de las más útiles.

Para empezar, los comandos usados más frecuentemente son estos:

                         Comando                         
Actualizar completamente el sistema. Las opciones --skip-broken --nogpgcheck y --assumeyes (o simplemente -y) son útilesyum update
Tratar de instalar o actualizar un paquete de un fichero local (no lo hace si faltan dependencias)rpm -Uvh fichero.rpm
Instalar un paquete de un fichero local resolviendo las dependencias necesariasyum localinstal fichero.rpm
Instalar un paquete de los repositorios y resolver las dependencias necesariasyum install nombre_paquete
Tratar de eliminar un paquete (no lo hace si hay otros que dependen de él)rpm -e nombre_paquete
Eliminar un paquete y todos los que dependan de él (pedirá confirmación)yum remove nombre_paquete

En un gran porcentaje de casos esto es todo lo que debemos conocer de ambos y lo que tendremos que usar de forma habitual. Pero existen muchas otras opciones útiles y/o interesantes:

                         Comando                         
Realiza un "downgrade" del paquete en fichero.rpmrpm -Uvh --oldpackage fichero.rpm
Idem que el anterior, pero usando yumyum dowgrade nombre_paquete
Lista las dependencias necesarias para el paqueterpm -qpR fichero.rpm
Lista todos los ficheros (y su ubicación) que se han instalado con el paqueterpm -ql nombre_paquete
Nos indica el paquete del que ha salido el fichero indicadorpm -qf nombre_fichero
Busca paquetes cuyo nombre sea total o parcialmente el indicadoyum search nombre
Busca el o los paquetes que proporcionan el fichero indicado. Muy útil cuando necesitamos determinada librería.yum whatprovides nombre_fichero
Busca el paquete indicado (admite comodines en el nombre) y nos dice si está instalado o no y otros datos.yum list nombre_paquete
Muestra el historial de uso reciente de yumyum history

Cuando queremos instalar un equipo con exactamente los mismos paquetes que otro dado, tenemos la posibilidad de crear una lista de paquetes instalados con el siguiente comando:

rpm -qa lista_paquetes.txt

Para luego instalarlos en la segunda máquina de esta forma que nos cuentan en Unixcraft:

sudo yum -y install $(cat paquetes.txt)

Para otras posibilidades, tienes buenas referencias aquí para yum y aquí y aquí para rpm (pero con cuidado, que he visto algunos ejemplos que usan opciones que ya no están disponibles, como --repackage) o, por supuesto, en las páginas del manual de cada una de ellas.

Además, yum cuenta con un amplio repertorio de plugins que le permiten mejorar u optimizar su trabajo. Puedes ver la lista de la que dispones en tus repositorios con alguno de los comandos que acabas de aprender (yum list yum-plugin* o yum search yum-plugin funcionarían). Aparte de los que vienen cargados con Fedora por defecto, estos son los que considero imprescindibles:

Y nos falta aún por ver la forma de indicarle al sistema donde están los repositorios de software, o sea, el equivalente al archivo /etc/apt/sources.list de los Debian. Esto se hace en archivos con extensión .repo que deben de crearse en el directorio /etc/yum.repos.d. Lo normal es crear un archivo por cada repositorio o familia de estos. Aquí tenemos también diferentes opciones de personalización. Veamos un ejemplo:

[kde-testing]
name=kde-testing
# baseurl=http://ftp.heanet.ie/pub/kde-redhat/fedora/$releasever/$basearch/testing
mirrorlist=http://apt.kde-redhat.org/apt/kde-redhat/fedora/mirrors-testing
enabled=1
gpgkey=http://apt.kde-redhat.org/apt/kde-redhat/kde-redhat.RPM-GPG-KEY
gpgcheck=1
skip_if_unavailable=1

En las páginas del manual de yum.conf (el archivo de configuración de esta herramienta) tienes explicadas estas opciones y otras muchas bajo el epígrafe de repository options.

Y para el que prefiera una utilidad gráfica y, como a mi, no le entusiasme KPackagekit (apper desde fedora 16), puede echarle un vistazo a yumex (mi favorito) o a smart.

Salir de la versión móvil