Wednesday, 1 August 2012

WebSphere Portal v8 on Red Hat Enterprise Linux - some lessons learned

So I've just gone through my first full WebSphere Portal v8 installation, on a VM running Red Hat Enterprise Linux 6.3 ( 64-bit ), and learned a fair few new lessons, which is nice.

WP8 uses IBM Installation Manager, which is a deviation from the past, but a rather nice deviation. Installation Manager ( IIM for short ) is used for a lot of other IBM products, including IBM Connections, Rational Application Developer and IBM BPM.

One major benefit is that IIM is used for (a) the installation and (b) the patching.

In addition, as my friend, Mr Strachan, pointed out, IIM can be configured to download the WP8 source media directly from Passport Advantage, simplifying the overall download/installation process.

It can also pull fixes directly from Fix Central, again reducing the "cost" of deployment.

So, I started by installing IIM, which was relatively simple ( before I forget, I'm going to write a post on automating the installation of IIM and Portal via scripted response files - watch this space ).

Once installed, I tried to start IIM: -

$ /opt/IBM/InstallationManager/eclipse/IBMIM

Sadly, this didn't work, but didn't fail :-)

It simply returned me back to the command prompt, with no obvious error.

I spent a fair bit of time digging around on the web, working on the assumption that I had some dependency issues i.e. missing Linux binaries / libraries, before finding this: -


which led me to check whether I had the GTK libraries installed.

I then installed them as follows: -

$ yum clean all
$ yum install gtk2.i686
$ yum install libXtst.i686

This got me a bit further - IIM then failed to start BUT generated a log file, which contained: -

...
!ENTRY org.eclipse.osgi 4 0 2012-07-31 17:05:31.121
!MESSAGE Application error
!STACK 1
java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
        /opt/IBM/InstallationManager/eclipse/configuration/org.eclipse.osgi/bundles/448/1/.cp/libswt-pi-gtk-3659.so (libXtst.so.6: cannot open shared object file: No such file or directory)
        swt-pi-gtk (Not found in java.library.path)

        /tmp/swtlib-32/libswt-pi-gtk-3659.so (libXtst.so.6: cannot open shared object file: No such file or directory)
        /tmp/swtlib-32/libswt-pi-gtk.so (/tmp/swtlib-32/liblibswt-pi-gtk.so.so: cannot open shared object file: No such file or directory)
...

This led me to this developerWorks forum post: -


which directed me to install: -

gtk2.i686
libXtst.i686
libpk-gtk-module.so
libcanberra-gtk-module.so
gtk2-engines.i686

which I did as follows: -

$ yum install gtk2.i686
$ yum install libXtst.so.6
$ yum install libpk-gtk-module.so
yum install libcanberra-gtk-module.so
yum install gtk2-engines.i686

Once I'd got the required Linux libraries in place, I was able to use IIM, and successfully install WebSphere Portal v8.

My next challenge was to patch WP to the most recent CF01 release, as per this: -


which includes: -

PM65285 V8.0.0.0 Combined WP & WCM CF001

As mentioned, IIM took care of the patching of WAS to the requisite level ( pulling fixes down from Fix Central ), and I was able to get it to install the WP8 fix pack from my file system, well to a certain point.

This was a little bit more fiddly - for some reason, one has to do the following: -

(a) Download the fix pack - which came as 8.0.0.0-WP-WCM-Combined-CFPM65285-Server-CF01.zip
(b) Extract it into a temporary directory
(c) Create a subdirectory
(d) Extract a ZIP file that comes within the top-level ZIP file - PM65285_Server.zip  -  into that new subdirectory
Surely there's a better way ?

Anyway, having gone through those steps, I set IIM off installing the fix pack, but it failed with: -

CRIMA1160E: Error updating.
  CRIMC1029E: Adding zip people.impl 8.0.0.201207241905 to repository /opt/IBM/WebSphere/IMShared failed.
    CRIMC1085E: Resumable download failed for: /mnt/hgfs/Software/WP8/Fixes/Combined/800CF01/repository/native/people.impl_8.0.0.201207241905.zip.
      Encountered 2 times: Failed to retrieve 'zip people.impl 8.0.0.201207241905'.
        Downloading '/mnt/hgfs/Software/WP8/Fixes/Combined/800CF01/repository/native/people.impl_8.0.0.201207241905.zip' to '/opt/IBM/WebSphere/IMShared/tmp/cicdip_root/v/md5/10040a0a5c27faf306b624973092e469_md5~79b50a2367b6d4f7eda9a2e474b8b0fd'.
        Table of contents digests differs from digest of downloaded file.
        'md5' digest values do not match: [10040a0a5c27faf306b624973092e469] (Actual) vs [593364eeaa42a6c9ba7bc459d4ff9c52] (Expected). 
        Moved bad file /opt/IBM/WebSphere/IMShared/tmp/cicdip_root/v/md5/10040a0a5c27faf306b624973092e469_md5~79b50a2367b6d4f7eda9a2e474b8b0fd to /opt/IBM/WebSphere/IMShared/tmp/cicdip_root/failed/md5/10040a0a5c27faf306b624973092e469.
      Retrying corrupt retrieval.
      Elapsed time 00:00.44.

and this recurred on a number of occasions.

Now I mentioned that I was running WP8 etc. on a VM. However, I was pulling the fix pack from the host OS, using VMware Shared Folders.

I've had problems with installations running across Shared Folders before so that gave me a clue.

This time around, I moved the fix pack onto the local ( to the VM ) file system, as follows: -

cd /tmp/
mkdir WP8
cd WP8/unzip /mnt/hgfs/Software/WP8/Fixes/8.0.0.0-WP-WCM-Combined-CFPM65285-Server-CF01.zip
mkdir PM65285cd PM65285unzip ../PM65285_Server.zip 

and re-ran IIM pointing at that local repository.

This time around, the fix pack went on perfectly, and I now have a shiny new WebSphere Portal 8.0.0.0 CF01 installation, which is nice.

A few final points: -

(a)

For some reason, the WPVersionInfo.sh scripts: -

$ /opt/IBM/WebSphere/PortalServer/bin/WPVersionInfo.sh
$ /opt/IBM/WebSphere/wp_profile/PortalServer/bin/WPVersionInfo.sh

 fails with: -

Throwable: org.xml.sax.SAXParseException: WVER0201E: Missing Attribute 'emptiedProfile' within element of type 'uninstall'
org.xml.sax.SAXParseException: WVER0201E: Missing Attribute 'emptiedProfile' within element of type 'uninstall'
at com.ibm.websphere.product.xml.BaseHandler.newException(BaseHandler.java:284)
at com.ibm.websphere.product.xml.BaseHandler.getAttribute(BaseHandler.java:160)
at com.ibm.websphere.product.history.xml.historyInfoHandler.createElement(historyInfoHandler.java:88)
at com.ibm.websphere.product.xml.BaseHandler.startElement(BaseHandler.java:80)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at com.ibm.websphere.product.IMVersionHelper.loadIMHistoryInfo(IMVersionHelper.java:438)
at com.ibm.websphere.product.IMVersionHelper.readIMHistoryInfoEntity(IMVersionHelper.java:457)
at com.ibm.websphere.product.IMVersionHelper.setupIMVersionHelper(IMVersionHelper.java:262)
at com.ibm.websphere.product.IMVersionHelper.<init>(IMVersionHelper.java:188)
at com.ibm.websphere.product.VersionInfo.setIMVersionHelper(VersionInfo.java:559)
at com.ibm.websphere.product.VersionInfo.runReport(VersionInfo.java:882)
at com.ibm.websphere.product.VersionInfo.runReport(VersionInfo.java:822)
at com.ibm.websphere.product.VersionInfo.runReport(VersionInfo.java:754)
at com.ibm.websphere.product.VersionInfo.main(VersionInfo.java:437)
at com.ibm.websphere.product.VersionInfo.main(VersionInfo.java:266)
Throwable: org.xml.sax.SAXParseException: WVER0205E: Element 'offering' is not valid within element 'uninstall'
org.xml.sax.SAXParseException: WVER0205E: Element 'offering' is not valid within element 'uninstall'
at com.ibm.websphere.product.xml.BaseHandler.newException(BaseHandler.java:284)
at com.ibm.websphere.product.xml.BaseHandler.newInvalidElementException(BaseHandler.java:277)
at com.ibm.websphere.product.history.xml.historyInfoHandler.createElement(historyInfoHandler.java:203)
at com.ibm.websphere.product.xml.BaseHandler.startElement(BaseHandler.java:80)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at com.ibm.websphere.product.IMVersionHelper.loadIMHistoryInfo(IMVersionHelper.java:438)
at com.ibm.websphere.product.IMVersionHelper.readIMHistoryInfoEntity(IMVersionHelper.java:457)
at com.ibm.websphere.product.IMVersionHelper.setupIMVersionHelper(IMVersionHelper.java:262)
at com.ibm.websphere.product.IMVersionHelper.<init>(IMVersionHelper.java:188)
at com.ibm.websphere.product.VersionInfo.setIMVersionHelper(VersionInfo.java:559)
at com.ibm.websphere.product.VersionInfo.runReport(VersionInfo.java:882)
at com.ibm.websphere.product.VersionInfo.runReport(VersionInfo.java:822)
at com.ibm.websphere.product.VersionInfo.runReport(VersionInfo.java:754)
at com.ibm.websphere.product.VersionInfo.main(VersionInfo.java:437)
at com.ibm.websphere.product.VersionInfo.main(VersionInfo.java:266)


It doesn't cause a real problem, but I'm assuming that it's a bug of some sort. Will likely raise a PMR.

A colleague was unable to replicate the problem on Windows; I've asked another Linux user to try it ...

(b)

IIM requires you to enter your credentials - WASAdmin and PortalAdmin accounts and passwords - each and every time you run it. It then goes off to validate those credentials. This requires it to start WebSphere Portal, validate the credentials, and then stop WebSphere Portal. Surely, there's a better way ?

Well, that'll do for now - more to come, I'm sure :-)




2 comments:

David Strachan said...

Dave,

I tried the WPVersionInfo.sh on my RHEL6.2 system and did not see the exception that you did. The task ran fine and reported my portal version.

Here is some system info:
RHEL 6.2, kernel 2.6.32-220.el6.x86_64

Name IBM WebSphere Portal MultiPlatform
Version 8.0.0.0
ID MP
Build Level wp800_404_02 2012-04-21
Build Date 04/21/2012

(This is a pre-release build I think but near enough the gold master.)

Dave Hay said...

@David - thanks for this - I'll be interested to see whether the same continues to be true when you update WP to CF01. Will also try a new build on the Mac ( 16 GB RAM, SSD, what's not to like ? ).