sábado, febrero 18, 2006

- RPM - Guia Breve

Formas para instalar un paquete RPM
rpm -i foobar-1.0-1.i386.rpm
rpm -ivh foobar-1.0-1.i386.rpm #muestra avance de instalación
rpm -i ftp://ftp.redhat.com/redhat/rh2/RPMS/foobar-1.0-1.i386.rpm

Actualizar una aplicacion (si no esta instalada lo hace)
rpm -Uvh foobar-1.0-1.i386.rpm

Actualiza el paquete si este esta instalado, no hace nada si no lo esta
rpm -Fvh foobar-1.0-1.i386.rpm

Re-instalar el paquete, se usa para paquetes que se han corrompido
rpm --replacepkgs -ivh foobar-1.0-1.i386.rpm

Desinstalar Paquete
rpm -e foobar-1.0-1

Si se borro algun archivo accidentalmente, esta opcion verifica(V) Todos(a) los paquetes
rpm -Va

Para saber a que paquete pertenece un archivo bar o programa foo:
rpm -qf /usr/bin/bar
rpm -qf `which foo`

Para informacion de un paquete rpm
rpm -qpi foobar-1.0-1.i386.rpm

Para tener informacion de un paquete instalado
rpm -qi foobar-1.0-1

Si se quiere saber que archivos instala un paquete rpm
rpm -qpl foobar-1.0-1.i386.rpm

Si se quiere saber que archivos instalo un paquete
rpm -ql foobar-1.0-1

Saber si esta instalado algun programa 'foo'
rpm -qa | grep -i foo

Imprime el nombre y el tamaño de todos los paquetes instalados
rpm -qa --queryformat "%-20{name} \t %20{size}\n"

Imprime el nombre y el sumario del paquete llamado foo
rpm -q --queryformat "%{name} \t %{summary}\n" foo

Crear un RPM a partir de un archivo .spec
rpm -ba foobar-1.0.spec

Instalar un rpm desde un src.rpm
rpmbuild --rebuild packete-1.0-5.src.rpm
cd /usr/src/redhat/RPMS/i386 # path donde queda el rpm
rpm -Uvh foobar-1.0-1.i386.rpm

Crear un RPM a partir de un tarball (tar.gz)
rpmbuild -tb xx.tar.gz

Descomprimir un rpm para sacar un archivo de el
rpm2cpio foobar-1.0-1.i386.rpm | cpio -idv

Reconstruir la BD de rpm's
rpm --rebuilddb
pkill rpm #en el caso que se cuelgue el proceso
#para borrar los bloqueos de la BD
rm -f /var/lib/rpm/__db*
rpm --rebuilddb #volver a intentar

Contruir un RPM para un arquitectura especifica dede el SRPM
Ajustar los optflags para i[4-6]86 en /usr/lib/rpm/rpmrc o en /root/.rpmrc (default i386)
Ejemplo de lo que debe contener un .rpmrc:
optflags: i686 -02 -fomit-frame-pointer -fno-strict-aliasing -march=i686
Construir el nuevo RPM usando el comando:
rpm --rebuild --target [arch] [SRPM]
Ejemplo:
rpm --rebuild --target i686 foobar-1.0-1.src.rpm

Saber dependencias de un paquete
rpm -q --whatrequires foobar-1.0-1.i386.rpm

Saber el paquete src donde viene un programa foo
rpm -qi $(rpm -qf $(which foo)) | grep 'Source RPM'

Mas detalle en: Maximum RPM