viernes, 9 de mayo de 2008

Trucos de Yum y RPM

Yum y Rpm son excelentes herramientas de manejo de paquetes, pero ellas tienen varias opciones y aplicaciones menores que nos permiten hacer algunas cosas interesantes.Probablemente no necesites usarlas con frecuencia, pero estarán a mano para cuando las necesites.
Obteniendo rpm para mostrar la arquitectura
Éste es un truco muy sencillo, y muy útil especialmente para la gente que usa los sistemas x86_64. Apenas una línea en ~/.rpmmacros ahorrará todas las clases de apuro más adelante.

echo \"%_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}\" >> ~/.rpmmacros

Reseteando permisos de ficheros
¿Usted ha hecho un desorden completo de los permisos de un paquete dado? No se preocupe pues RPM cubierta la solución.

rpm –setperms

Ver los Logs de Cambio (Changelog)
Porque CentOS y el proveedor retribuyen con parches de seguridad, los números de versión pueden a menudo ser engañosos cuando usted busca arreglos de CVE. La comprobación del changelog de un paquete es una buena manera de ver si se ha puesto en ejecución el arreglo. De nuevo, RPM viene al rescate.

rpm -q –changelog less

Usar less no es necesario, pero para algunos paquetes como el kernel, el changelog puede ser bastante largo. Usar less ayudaría a hacer las cosas mas fácil para su lectura
¿Dondé esta la documentación?
Para un rápido listado de la documentación de un paquete, se pueden usar las dos siguientes opciones:

rpm -qd

Esto mostrará la documentación contenida dentro del rpm, y si solamente tienes un nombre de fichero, puedes hacer:

rpm -qdf /camino/al/fichero

Y RPM mostrara la documentación en el paquete que posee el archivo
Origen Del Paquete
Ocasionalmente es agradable saber adónde usted consiguió ciertos paquetes, o cuántos paquetes usted tiene en su sistema de un repositorio o de un distribuidor particular. Hay un par de opciones de búsqueda que usted puede utilizar que no están en las páginas man de RPM para ayudarle aquí. Aunque que no sean el 100% perfectas, ciertamente le pueden ayudar. La mayoría de los repositorios de paquetes marcan sus paquetes con etiqueta con un identificador en la secuencia del lanzamiento. Por ejemplo el rpmforge utiliza el *rf* como su identificador. Usted puede utilizar esto para ver lo que tiene instalado de ellos.

rpm -qa release=\"*rf*\"

o si quiere solamente ver cuantos paquetes tiene instalado que han sido construidos por JohnnyHughes puedes usar

rpm -qa packager=\”Johnny*\”

Este truco funciona para casi todas las categorías visibles enrpm -qi
Extraer solo un fichero
Si usted necesita extraer solo un fichero de un rpm sin reinstalar el paquete completo, lo puede hacer con rpm2cpio. Por ejemplo, para extraer solo el fichero de configuración de logrotate rpm usted solo hara lo siguiente:

rpm2cpio logrotate-1.0-1.i386.rpm cpio -ivd etc/logrotate.conf

Preparando la reconstrucción de paquetes sin convertirse a root
Algunas veces tienes que reconstruir un paquete, quizás solo para usar alguna opción de configuración que no esta en el paquete oficial. O porque has encontrado algun paquete que no esta en los repositorios, o porque el sitio solo le ofrece RPMs para otras distribuciones. Entonces tienes que tomar el src.rpm y reconstruirlo por ti mismo. Pero realmente no quieres hacer esto como root. Entonces aqui esta como reconstruir tus paquetes en tu directorio home con tu propia cuenta de usuario. Asuma que realmente quieres hacerlo en ~/redhat. Seguro, usted puede mover esto a alguna parte.

Primero iremos al directorio donde queramos trabajar.Observe la semejanza a la estructura del directorio en /usr/src/redhat:

[testuser@shutdown ~]$ cd
[testuser@shutdown ~]$ mkdir -p redhat/{SRPMS,RPMS,SPECS,BUILD,SOURCES}[testuser@shutdown ~]$ ls redhat/ BUILD RPMS SOURCES SPECS SRPMS[testuser@shutdown ~]$

Entonces trabajeremos con algunos macros rpm, así el rpmbuild sabe sobre usted y donde usted desea construir:

[testuser@shutdown ~]$ echo \”%_topdir /home/testuser/redhat\” >> .rpmmacros[testuser@shutdown ~]$ echo \”%packager Test User \” >> rpmmacros
[testuser@shutdown ~]$ cat .rpmmacros%_topdir /home/testuser/redhat%packager Test User testuser@example.com
[testuser@shutdown ~]$

Eso es todo. La próxima vez que haga rpmbuild –rebuild foo.src.rpm, sus resultados estarán en ~/redhat/RPMS/i386 (o en cualquier otra arquitectura de la que usted acaba de reconstruir su paquete) ¿Fácil, no es así?

No hay comentarios: