List of Installed patches for AIX from given set of patches

I need to find out list of installed patches from given list of patches.
I have tried using instfix -f <File containing list of patches> -i -c
But I was not able to understand the output of this command. It was like below.

bos.perf.tools: :0.0.0.0:?:
bos.rte.libc: :0.0.0.0:?:
invscout.rte: :0.0.0.0:?:
devices.pci.14106902.rte: :0.0.0.0:?:
X11.apps.xdm: :0.0.0.0:?:
bos.mp64: :0.0.0.0:?:
devices.chrp.base.diag: :0.0.0.0:?:
devices.fcp.disk.rte: :0.0.0.0:?:
X11.base.rte: :0.0.0.0:?:
bos.adt.prof: :0.0.0.0:?:
bos.rte.control: :0.0.0.0:?:
devices.scsi.tape.diag: :0.0.0.0:?:
bos.mls.cfg: :0.0.0.0:?:
bos.rte.serv_aid: :0.0.0.0:?:

It did returned result with respect to given file but how do I know which one is installed and which one is not from this output? Or is there any other way to find this?

Thanks.

Create a list of all installed filesets using the lslpp command. Since you intend to analyse it by a script i suggest you use the "-c" switch, which gives a colon-separated one-line-per-fileset output ideally suited to using it in scripts.

Then use a grep -f <your.list.file> <fileset.list> of some sorts to find the filesets on your lists which are installed - misses will be not installed at all.

Depending on the exact format of your list you will have to tweak this general sketch into a script, but the idea should be obvious.

I hope this helps.

bakunin

1 Like

if you check an installed patch, output looks like:

IY64319:devices.common.IBM.atm.rte:5.3.0.10:5.3.12.2:+:new function
IY64319:devices.common.IBM.ethernet.rte:5.3.0.10:5.3.12.3:+:new function
IY64319:devices.common.IBM.fc.rte:5.3.0.10:5.3.12.3:+:new function
IY64319:devices.common.IBM.fddi.rte:5.3.0.10:5.3.11.0:+:new function
IY64319:devices.common.IBM.hdlc.rte:5.3.0.10:5.3.11.0:+:new function
IY64319:devices.common.IBM.tokenring.rte:5.3.0.10:5.3.11.0:+:new function

check without -c,
looks like:

# instfix -f patches -i
    All filesets for IY64282 were found.
    All filesets for IY64291 were found.
    All filesets for IY64312 were found.
    All filesets for IY64319 were found.
    There was no data for IY32492 in the fix database.

to see whats installed use lslpp as bakunin wrote

1 Like

Just by-the-by.....regarding instfix and it's usefulness.

Post upgrade/installation I usually do a:

instfix -ic | grep ML | grep 5300-12 | grep ":-:"

Looking for the ":-:" shows you the filesets that are "known" to the system, but not at the known (higher) ML/TL.
This is useful when you have installed an oslevel, but

 oslevel -s 

is not showing you what you believe to be an accurate post-installation oslevel.
This is normally down to a handful of filesets not in your install or lpp_source.

An example, host installed with TL12 Concluding Service Pack (5) for 5.3, updated from TL8, but reporting TL11!

root:host1:/$ instfix -ic | grep ML | grep 5300-12 | grep ":-:"
5300-12_AIX_ML:xlsmp.aix53.rte:1.8.0.3:1.8.0.1:-:AIX 5300-12 Update
root:host1:/$ oslevel -s
5300-11-08-1140

So I need to grab that fileset and update it.

Off topic a bit but a useful thing to be aware of the ":-:" meaning in instfix output :b:

That's right. "oslevel" and similar tools always report the "lowest common denominator" - the fileset with the lowest patch level. If you have the whole system at TL12 and one fileset at TL11, then TL11 is reported. See also the pinned thread at the top of our board, where this is explained in detail.

bakunin