20 de Enero, 2013

Instalando dependencias para construir un RPM

No tenía ni idea que se podía hacer esto, lo descubrí cuando estaba preparando el libro para el aniversario de la web de los crucigramas, cuando tenía que instalar algún paquete de LaTeX que había encontrado en CTAN.

Supongamos que quieres instalar el módulo crosswrd y no sabes cómo se llama el paquete en Fedora (bueno, siempre que quieras instalar todo con tu gestor de paquetes; no tienes porqué hacerlo así). Resulta que puedes ejecutar:

# yum install 'tex(crosswrd.sty)'

Para que de esta forma yum instale el paquete correspondiente (tex-crosswrd en este caso, que era bastante previsible :D).

Así que cuando he ido a montar el paquete de NFU para Fedora 18, no he tenido que pensar mucho para conseguir instalar las dependencias necesarias (en las instrucciones de instalación no indico nombres de paquetes, que cambian de una distribución a otra):

$ rpmbuild -ba nautilus-flickr-uploader.spec 2>&1 | grep needed | awk '{ print $1 }' > dependencias

rpmbuild nos muestra errores tipo:

error: Failed build dependencies:
        perl(Gtk2) is needed by nautilus-flickr-uploader-0.14.2-1.fc18.noarch
        perl(Gtk2::GladeXML) is needed by nautilus-flickr-uploader-0.14.2-1.fc18.noarch
        ...

Así que el oneliner lo que hace es redirigir la salida de error de la herramienta para obtener el primer campo de las lineas con mensajes needed.

Ahora solo necesitamos pasar el resultado a yum y tedremos todo instalado para construir nuestro paquete:

# yum install $(cat dependencias)

Si tenemos el fichero .spec podríamos tratar las lineas BuildRequires, pero como podemos tener varias dependencias en la misma linea (separadas por comas), es más complicado. Los errores de rpmbuild son bastante convenientes porque tenemos una dependencia por linea ;).

La verdad es que más de una vez me he tenido que calentar la cabeza para ver cómo se llama el paquete que estoy buscando (sobretodo porque trabajando con Debian, Ubuntu y CentOS a diario, ¡ya es fácil mezclar cosas!). Nunca más :).

Anotación por Juan J. Martínez, clasificada en: fedora.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: