Topic
5 replies Latest Post - ‏2012-11-15T06:48:16Z by teletype
teletype
teletype
27 Posts
ACCEPTED ANSWER

Pinned topic locate,syslog-ng stoped working after an AIX upgrade. What to do?

‏2012-11-09T13:59:11Z |
I've upgraded my server to AIX61TL7SP5 (from AIX61TL4SP2). After that locate and syslog-ng (maybe more) stopped working.

# locate exec(): 0509-036 Cannot load program locate because of the following errors: 0509-150   Dependent module /opt/freeware/lib/gcc/powerpc-ibm-aix6.1.0.0/4.2.4/../../../libintl.a(libintl.so.8) could not be loaded. 0509-152   Member libintl.so.8 is not found in archive


From the installation logfile:


installp:  APPLYING software 

for: rpm.rte 3.0.5.52   Warning: the contents of the following RPM packages will be overwritten. If these packages did not come from the AIX Toolbox 

for Linux Applications, it may be necessary to reinstall them.   bzip2-1.0.5-1 gettext-0.17-1 info-4.12-1 popt-1.15-1 zlib-1.2.4-1


After some analysis I found:

# lslpp -w /opt/freeware/lib/libintl.a rpm -qf /opt/freeware/lib/libintl.a gettext-0.17-1


So libintl is NOT owned by any lpp package. It is owned by the gettext rpm.
However:

# lslpp -f rpm.rte | grep libint /usr/opt/freeware/lib/libintl.a

So it is owned by rpm.rte as well. Nasty!

If I reinstall those rpms locate etc. will work again. But if I look at the archive before and after the reinstall of gettext I see some differences:

before:

# ar -t /usr/lib/libintl.a libintl.so.1 intl-compat.o bindtextdom.o dcgettext.o dgettext.o gettext.o finddomain.o loadmsgcat.o localealias.o textdomain.o l10nflist.o explodename.o dcigettext.o dcngettext.o dngettext.o ngettext.o plural.o localcharset.o


And after the reinstallation of gettext:

# ar -t /usr/lib/libintl.a: libintl.so.8 libintl.so.1

So after the installation of gettext, as suggested by the log file, I lose some libraries.

What to do?

Just install gettext (and hope that everyting else will be working afterwards) or try to extract "libintl.so.8" from the second archive and add it to the first since that is the only one not in the large achive?
Updated on 2012-11-15T06:48:16Z at 2012-11-15T06:48:16Z by teletype
  • SystemAdmin
    SystemAdmin
    6908 Posts
    ACCEPTED ANSWER

    Re: locate,syslog-ng stoped working after an AIX upgrade. What to do?

    ‏2012-11-11T19:39:00Z  in response to teletype
    We are taking a look at this.
    It looks like libintl.a got overwritten.
    We are checking if it's something that happened in the TL or SP contents or if it's something that your environment introduced.

    Jay
    • teletype
      teletype
      27 Posts
      ACCEPTED ANSWER

      Re: locate,syslog-ng stoped working after an AIX upgrade. What to do?

      ‏2012-11-12T05:57:25Z  in response to SystemAdmin
      I know it has been overwritten by bos.rte.
      • teletype
        teletype
        27 Posts
        ACCEPTED ANSWER

        Re: locate,syslog-ng stoped working after an AIX upgrade. What to do?

        ‏2012-11-12T06:38:42Z  in response to teletype
        Something else I saw after the reinstall of the rpms:
        
        #rpm -qi --provides AIX-rpm | grep libintl libintl.a(libintl.so.1) #updtvpkg #rpm -qi --provides AIX-rpm | grep libintl libintl.a(libintl.so.1) libintl.a(libintl.so.8)
        

        So after the reinstallation of gettext (and the other four) you have to run updtvpkg (Maybe geninstall does, I used rpm)
  • SystemAdmin
    SystemAdmin
    6908 Posts
    ACCEPTED ANSWER

    Re: locate,syslog-ng stoped working after an AIX upgrade. What to do?

    ‏2012-11-14T20:21:19Z  in response to teletype
    AIX Development looked at your issue and verified that we have never shipped a libintl.a which includes the libintl.so.8 member.

    Thus we think the scenerio that resulted in the problem was as follows:

    1) Client has an AIX system with "rpm.rte" on it, including libintl.a, which does not (and never has had) a "libintl.so.8" member.
    2) Client installs a newer version of gettext than what IBM provides; they install "gettext 0.17" on AIX, replacing the libintl.a library with one that includes this "libintl.so.8" member; this image came from somewhere else.
    3) Client installs or builds some code that uses the libintl.so.8 shared object.
    4) Client later updates AIX, including rpm.rte, which restores the original IBM-provided libintl.a (which never had libintl.so.8).
    5) Client notices that libintl.so.8 is no longer there.
    Their 3rd-party copy of gettext had replaced the provided rpm.rte one, and when they installed a new rpm.rte the original was put back again.

    To test this, you can run the command: "rpm -qi gettext"
    You will see the "Build Host", indicating the hostname of the system that this fileset was built on.
    If that hostname does not end in an "ibm.com" address, then that explains why they had a different gettext than what IBM provided.
    (You shouldn't see an ibm address, because we never distributed gettext 0.17).

    You would indeed have to expect to reinstall their alternative version of gettext to address your syslog-ng issue.

    Hope this helps.
    Jay
    • teletype
      teletype
      27 Posts
      ACCEPTED ANSWER

      Re: locate,syslog-ng stoped working after an AIX upgrade. What to do?

      ‏2012-11-15T06:48:16Z  in response to SystemAdmin
      Jay,

      Thanks for your answer.
      I got the gettext rpm from perzl's website. So the build host is not ibm.com. Your analysis is correct.
      Regarding nr. 4 Why doesn't it show up in a lslpp -w outout? Is that a development choise?

      However my question remains:
      If I reinstall gettext and get a different libintl.a will other programs, which may be needing something besides libintl.so.[81], still work? I mean there must be a reason why IBM put them there. Or can I say that all other libraries are not used by AIX commands? I searched for those other libraries but I got mainly references to linux, gnu and fsf software.
      So I can get locate and syslog-ng to work. My concern however is if it does have side effects.