« How to create a Domino keyring for a SHA2+ certificates | Main| Slow day »

IBM Domino 9.0.1 Fix Pack installler quits without error on Ubuntu Server 16.04

Tags: domino linux ubuntu 16.04 perl installer fix pack fixpack defined(@array
I recently had to reinstall my system because I  chose to ignore smartd's emails nagging me about unrecoverable errors a bit too long.
The system disk that inevitably died before I could grab an image provided me with an opportunity to install the latest & greates Ubuntu LTS release (16.04), and yes, I know, Ubuntu (server) is not a supported platform.

How hard can it be right? Install OS, install Domino, Traveler and fix packs, been there, done that etc.
Well... I got as far as installing Domino 9.0.1 and Traveler 9.0.1 and then things got interesting.
Ran the usual console mode installer for Domino, the Traveler GUI installer and everything was going as expected.

But when I tried to install Domino 9.0.1 FP6 the installer exited without error after displaying the following:

IBM Domino for Unix Install Program                                                                                                                                            
------------------------------------                                                                                                                                            
Installer is initializing. It may take a few minutes, please, wait.

No error, nothing.
The install script did create a nuish.err file which contained a hint about what was going wrong:

Can't use 'defined(@array)' (Maybe you should just omit the defined()?)

This is because there has been a change in the Perl language (http://blogs.perl.org/users/rurban/2012/02/on-definedarray-and-definedhash.html )
The defined(@array)  construction (see below) is no longer allowed, in Perl 5.17 this would trigger a warning, but because Ubuntu 16.04 ships Perl 5.22 it just craps out once it encounters this construct.

The solution is to do just that, change line 80 in tools/lib/NIC.pm from:

if (defined(@{$scr->{target_hosts}})) {

to

  if (@{$scr->{target_hosts}}) {

This works for the hotfix installer as well.

The next surprise was installer for the Traveler update. It kept telling me it would not work in the chosen UI mode (gui and/or console), however silent mode got the job done.