The other day, I wanted to find out which RPM metadata field was used to store the “el6” value in the “rpm -q” output for a package, e.g:
[root@as-ws-pr-la-01 Desktop]# rpm -q kernel-2.6.32-504.el6.x86_64 kernel-2.6.32-504.el6.x86_64 [root@as-ws-pr-la-01 Desktop]#
This came up because this output looks identical for CFEngine’s RHEL 4, 5 and 6 packages, even though there are two different packages involved.
So I used this one-liner to dump all RPM metadata which should be that RELEASE was most likely the proper field to update:
[root@as-ws-pr-la-01 Desktop]# echo rpm -q kernel-2.6.32-504.el6.x86_64 --queryformat " $(for f in `rpm --querytags`; do echo \n $f = %{${f}} ' ' ; done ) " |sh |grep el6
BASENAMES = .vmlinuz-2.6.32-504.el6.x86_64.hmac
CHANGELOGNAME = Johnny Hughes <johnny@centos.org> [2.6.32-504.el6.centos]
EVR = 2.6.32-504.el6
FILENAMES = /boot/.vmlinuz-2.6.32-504.el6.x86_64.hmac
NEVR = kernel-2.6.32-504.el6
NEVRA = kernel-2.6.32-504.el6.x86_64
NVR = kernel-2.6.32-504.el6
NVRA = kernel-2.6.32-504.el6.x86_64
/sbin/new-kernel-pkg --package kernel --install 2.6.32-504.el6.x86_64 || exit $?
/sbin/new-kernel-pkg --package kernel --mkinitrd --dracut --depmod --update 2.6.32-504.el6.x86_64 NEWKERNARGS || exit $?
/sbin/new-kernel-pkg --package kernel --rpmposttrans 2.6.32-504.el6.x86_64 || exit $?
/sbin/weak-modules --add-kernel 2.6.32-504.el6.x86_64 || exit $?
PREUN = /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove 2.6.32-504.el6.x86_64 || exit $?
/sbin/weak-modules --remove-kernel 2.6.32-504.el6.x86_64 || exit $?
PROVIDEVERSION = 2.6.32-504.el6
R = 504.el6
RELEASE = 504.el6
SOURCERPM = kernel-2.6.32-504.el6.src.rpm
[root@as-ws-pr-la-01 Desktop]#
Does anybody know a better way to find out what RPM fields are used to construct the “rpm -q” output?