Ich wollte "einfach nur" den Fix Pack 15 für den WebSphere Application Server 8.5.5 (WAS) einspielen, auf dem ein Connections 6 läuft - bevor ich das auf CR6 anhebe. Das ist an sich nichts Besonderes oder Schwieriges, nur dass es diesmal ein ungewöhnliches Problem gab.
Der IBM Installation Manager, der für solche Aktualisierungen benutzt wird, prüft vor Änderungen grundsätzlich, ob alles passt und dass notwendige Abhängigkeiten eingehalten werden. Und bei genau dieser Prüfung erschien folgender Fehler:
Beim Bewerten eines Ausdrucks in Bundle "com.ibm.ws.osprereq.check.v85" trat eine Ausnahmebedingung auf.
Umgebung: Connections 6.0 (und Docs und Surveys usw.) auf einem Websphere Application Server (WAS ND) 8.5.5 FP10 unter CentOS 7.7 64bit. Dazu ein IBM Installation Manager 1.9.1.0 x86_64.
Die Protokolle schreibt der IM unter Linux ins Verzeichnis: /var/ibm/InstallationManager/logs/
Die Namen der XML-Dateien ergeben sich dabei aus dem Zeitpunkt der Installation (bzw. des Versuchs).
In diesem Fall sah der wesentliche Eintrag so aus:
<entry num='532' time='1570513625974' elapsed='28:35.10' level='ERROR' thread='ModalContext'>
<logger>com.ibm.cic.common.core.model.internal.SelectionExpression</logger>
<class>com.ibm.cic.common.core.model.internal.SelectionExpression.WithBundle</class>
<method>evaluate</method>
<message>Beim Bewerten eines Ausdrucks in Bundle "com.ibm.ws.osprereq.check.v85" trat eine Ausnahmebedingung auf.</message>
<exception>
java.lang.NullPointerException
<stack>org.eclipse.osgi.internal.loader.BundleLoader.findRequiredSource(BundleLoader.java:1140)</stack>
<stack>org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:413)</stack>
<stack>org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)</stack>
<stack>org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)</stack>
<stack>org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)</stack>
<stack>java.lang.ClassLoader.loadClass(ClassLoader.java:863)</stack>
<stack>com.ibm.ws.osprereq.check.v85.OSPrereqSelector.evaluate(OSPrereqSelector.java:74)</stack>
<stack>com.ibm.cic.common.core.model.internal.SelectionExpression$WithBundle.evaluate(SelectionExpression.java:249)</stack>
<stack>com.ibm.cic.common.core.model.internal.SelectionOperator$AndOp.execute(SelectionOperator.java:154)</stack>
<stack>com.ibm.cic.common.core.model.internal.SelectionExpression$WithOperator.evaluate(SelectionExpression.java:89)</stack>
<stack>com.ibm.cic.common.core.model.internal.AbstractFeatureBase.evaluateApplicability(AbstractFeatureBase.java:134)</stack>
<stack>com.ibm.cic.common.core.model.internal.FeatureGroup.evaluateApplicability(FeatureGroup.java:1)</stack>
<stack>com.ibm.cic.agent.core.Agent.checkPrerequisite(Agent.java:1425)</stack>
<stack>com.ibm.cic.agent.core.sharedUI.PrerequisiteCheckerUtils.validateOfferingFeaturesAndFeatureGroups(PrerequisiteCheckerUtils.java:157)</stack>
<stack>com.ibm.cic.agent.core.sharedUI.PrerequisiteCheckerUtils.validateFeatures(PrerequisiteCheckerUtils.java:115)</stack>
<stack>com.ibm.cic.agent.internal.ui.wizards.ConditionalInstallPage$5.run(ConditionalInstallPage.java:765)</stack>
<stack>com.ibm.cic.common.ui.internal.dialogs.SocketMonitorRunnableWithProgress$3.run(SocketMonitorRunnableWithProgress.java:238)</stack>
<stack>org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)</stack>
</exception>
</entry>
Also eine NullPointerException beim dynamischen Laden einer Klasse in dieser Zeile: com.ibm.ws.osprereq.check.v85.OSPrereqSelector.evaluate(OSPrereqSelector.java:74)
Und nu?
Leider brachten diverse Suchen nichts Hilfreiches zu Tage.
Wie kann man den IM debuggen? Dazu steht in der Connections-Dokumentation "Switching on debug mode in the installation wizard":
1. Create a new file log.properties under /var/ibm/InstallationManager/logs
.
2. Add the following linesInstallOperation=DEBUG
InstallOperation/pause.on_error=true
3. Restart Installation Manager.
Leider gab es auch danach keine neuen Erkenntnisse in der Log-Datei zu gewinnen.
Viele vergebliche Versuche später fand ich dann doch noch etwas - in der Dokumentation zum WebSphere Application Server unter "Troubleshooting installation":
Im Abschnitt Troubleshooting steht ziemlich weit unten, unter einen auffälligen Abschnitt zum Thema Überspringen der Plattenplatzprüfung ein kleiner, fast unschuldiger Satz:
To bypass operating-system prerequisite checking, add disableOSPrereqChecking=true
to the config.ini file in IM_install_root/eclipse/configuration
and restart Installation Manager.
Also diesen Hinweis umgesetzt und tatsächlich läuft die Installation nun weiter.