I see I did not read far enough - as you found the reference to slibclean. In it's defense I expect the IBM install program is using slibclean during it's installation of files - or, the files are being moved to something like /usr/lpp/lpp.name/save (it has been a long long time since I have studied how the installp recover option works) and the remove is only actually performed after the new files have been put into position.
On Mon, May 5, 2014 at 8:14 AM, Michael Felt <mamf...@gmail.com> wrote: > Well, my patch is at the end, leaving the rm in place. However, I could > examine looking at using slibclean (shared library clean) - which is the > program to remove outstanding (loaded, but not active) shared library code. > > And - thinking through - if the remove is not done, and the .so file is > not copied - the old .so copy remains - but you "expect" it to be updated. > For these cases, rather than remove I would move the file to a dated pid > (mv $TARGET $TARGET.$today.$$) - and if all fails move it back, otherwise > remove (and slibclean again, for certainty). I have been quite perturbed in > the past when I was installing "live" and it failed. My previous installed > php was now broken. > > re: slibclean - the program has been around "forever" - at least since > since AIX 4.X (starting in 1994-1995). No idea if it has been tested before > for php and/or instdso.sh. > > However, to work, slibclean still needs the previous version to be > stopped. I assume that is the same as unlink() of a file - the inode is not > actually cleared until both the link count is 0 and there are no open > connections to the inode. That is, I do not expect that slibclean is > removing "open" routines - but it might. > > Finally, In my case, as I am "packaging" to a temp directory (installing > to $INSTALL_ROOT/*) this should never be an issue. The other issue I run > into is the -a argument - because when packaging ( > > > On Sun, May 4, 2014 at 11:54 PM, Victor J. Orlikowski < > victor.j.orlikow...@alumni.duke.edu> wrote: > >> On May 4, 2014, at 5:46 PM, Victor J. Orlikowski < >> victor.j.orlikow...@alumni.duke.edu> wrote: >> >> My only comment to that would be: has AIX resolved the issue wherein it >> is required that the file backing a previously-loaded module has to be >> rm’d, in order to ensure that the in-memory copy is released? >> >> >> Responding to myself, after a quick consult with the Googlemonster: >> Seems you need to call a utility called slibclean, to remove the memory >> references to the shared object. >> >> And, sometimes, that still doesn’t work - so you have to rm it anyway. :/ >> >> Anyhoo - it seems to me that the real problem is that we’re deleting the >> newly generated .so, rather than the *target* into which we’re trying to >> copy (which is what would be what has the in-memory references). >> >> Best, >> Victor >> -- >> Victor J. Orlikowski <> victor.j.orlikow...@alumni.duke.edu >> >> >