Hi,
I need a script which makes the package compação rpm's through two text files ...
Since a file is the output of the command *rpm-qa > pkg.out *
And the second file is a list of several packages rpm's, multiple versions and architectures.
My idea is to compare a package *x* file pkg.out with several packages *y* of the file update.out and know whether a package and has a larger version of the package *x* installed and with that I return I have a package to be updated.
Does anyone can help me do this comparison?
OBS.: The servers do not have access to internet.
Here's an example of the packages described in the files:
[root@rpm tiago]# tail -n12 pkg.out glibc-devel-2.3.4-2.39 libuser-devel-0.52.5-1.el4.1 libmudflap-4.1.2-14.EL4 iiimf-libs-devel-12.1-13.EL.6 xorg-x11-devel-6.8.2-1.EL.33 lam-libs-7.1.2-8 libdbi-0.6.5-10.RHEL4.1 unixODBC-kde-2.2.11-1.RHEL4.1 perl-Compress-Zlib-1.42-1.el4 MySQL-python-1.2.1_p2-1.el4.1 nmap-3.70-1 sysstat-5.0.5-16.rhel4 [root@rpm tiago]#
--
[root@rpm tiago]# cat update.out glibc-devel-2.3.4-2.41.i386.rpm glibc-devel-2.3.4-2.39.i386.rpm glibc-devel-2.3.4-2.36.i386.rpm glibc-devel-2.3.4-2.25.i386.rpm glibc-devel-2.3.4-2.19.i386.rpm glibc-devel-2.3.4-2.13.i386.rpm glibc-devel-2.3.4-2.9.i386.rpm glibc-devel-2.3.4-2.i386.rpm libuser-devel-0.52.5-1.el4.3.i386.rpm libuser-devel-0.52.5-1.el4.1.i386.rpm libuser-devel-0.52.5-1.i386.rpm libmudflap-4.1.2-42.EL4.i386.rpm libmudflap-4.1.2-14.EL4.i386.rpm libmudflap-4.1.1-53.EL4.i386.rpm libmudflap-4.1.0-18.EL4.3.i386.rpm libmudflap-4.1.0-18.EL4.i386.rpm libmudflap-4.0.2-14.EL4.i386.rpm libmudflap-4.0.1-4.EL4.2.i386.rpm libmudflap-4.0.0-0.14.EL4.i386.rpm xorg-x11-devel-6.8.2-1.EL.52.i386.rpm xorg-x11-devel-6.8.2-1.EL.33.0.4.i386.rpm xorg-x11-devel-6.8.2-1.EL.33.0.2.i386.rpm xorg-x11-devel-6.8.2-1.EL.33.0.1.i386.rpm xorg-x11-devel-6.8.2-1.EL.33.i386.rpm xorg-x11-devel-6.8.2-1.EL.31.i386.rpm xorg-x11-devel-6.8.2-1.EL.19.i386.rpm xorg-x11-devel-6.8.2-1.EL.18.i386.rpm xorg-x11-devel-6.8.2-1.EL.13.37.7.i386.rpm xorg-x11-devel-6.8.2-1.EL.13.37.5.i386.rpm xorg-x11-devel-6.8.2-1.EL.13.37.2.i386.rpm xorg-x11-devel-6.8.2-1.EL.13.37.i386.rpm xorg-x11-devel-6.8.2-1.EL.13.36.i386.rpm xorg-x11-devel-6.8.2-1.EL.13.25.1.i386.rpm xorg-x11-devel-6.8.2-1.EL.13.25.i386.rpm xorg-x11-devel-6.8.2-1.EL.13.20.i386.rpm xorg-x11-devel-6.8.2-1.EL.13.16.i386.rpm xorg-x11-devel-6.8.2-1.EL.13.6.i386.rpm xorg-x11-devel-6.8.1-23.EL.i386.rpm lam-libs-7.1.2-15.el4:2.i386.rpm lam-libs-7.1.2-8:2.i386.rpm MySQL-python-1.2.1_p2-1.el4.1.i386.rpm MySQL-python-1.0.0-1.RHEL4.1.i386.rpm sysstat-5.0.5-19.el4.i386.rpm sysstat-5.0.5-16.rhel4.i386.rpm sysstat-5.0.5-15.0.1.el4.i386.rpm sysstat-5.0.5-14.rhel4.i386.rpm sysstat-5.0.5-11.rhel4.i386.rpm sysstat-5.0.5-7.rhel4.i386.rpm sysstat-5.0.5-1.i386.rpm nmap-3.70-1:2.i386.rpm [root@rpm tiago]#
Att,
On Mon, 2009-01-26 at 08:26 -0200, Tiago Dias wrote:
Hi,
I need a script which makes the package compação rpm's
through two text files ...
Since a file is the output of the command rpm-qa > pkg.out And the second file is a list of several packages rpm's,
multiple versions and architectures.
My idea is to compare a package x file pkg.out with several
packages y of the file update.out and know whether a package and has a larger version of the package x installed and with that I return I have a package to be updated.
Does anyone can help me do this comparison?
Looks like you want to see what the update packages are without doing the updates, and without an internet connection. About 5 years ago I would have suggest running 'rpm --freshen --test packagename-from-update.out'. Today, I'd suggest saving even more time and just a local instance of mrepo. Configure your yum repos in /etc/yum.repos.d/ to point to the repository, and install the yum-updatesd package to find out what the new packages are... Why reinvent the wheel? ;)
-I
From: Tiago Dias tux.tiago@gmail.com I need a script which makes the package compação rpm's through two text files ... Since a file is the output of the command rpm-qa > pkg.out And the second file is a list of several packages rpm's, multiple versions and architectures.
Just for the fun (and did not really test it):
cat pkg.out | awk ' { p=$1; n=match(p, "-[[:digit:]]+"); print substr(p,1,n); } '| while read PKG; dogrep "$PKG[0-9]" update.out; done
I will leave you as an exercise to sort the results by versions and head (or tail) to keep the highest one... ^_^ But, if your update.out file contained only the latest package (and not all different versions), that should work.
JD