As discussed in a previous blog, working with LSS might prove a little bit challenging from time to time. In this blog, I wanted to share an error I saw while installing LSS 16.6.1 on an Oracle database. Initially, I developed my silent installation for LSS (while encapsulate the LSS silent scripts provided by OpenText) using a PostgreSQL database because it’s usually easier to setup an environment on Kubernetes with PG because of licenses.
So, the silent installation scripts were created several months ago and working since then, apparently. Recently, I had to execute manually my silent install script of LSS on an environment which was using an Oracle database. The script completed properly, my automatic log file checking didn’t show any sign or errors or anything so for me it was fully installed. However, I still did a review of the logs printed on the screen to be sure and I did see a new “error” I wasn’t familiar with. I’m not sure you can call that an error because it’s just one line drowned in the flood of logs printed without any “ERROR” or “_E_” messages but it is clearly an error from a Linux point of view:
... ./registerOracleVersionView.sh: line 1: oracle: command not found ...
This message never appeared in the generated log file of the LSS installation, it’s only displayed on the screen, which makes it… quite difficult to see in automation. So, anyway, what’s the issue this time? Well looking at the message, it’s clear that the shell script has a wrong content because it is trying to execute a command “oracle” which doesn’t exist. Where is this file? What’s its content?
[dmadmin@cs-0 ~]$ workspace="/tmp/lss/" [dmadmin@cs-0 ~]$ [dmadmin@cs-0 ~]$ cd ${workspace}/*/ [dmadmin@cs-0 LSSuite]$ [dmadmin@cs-0 LSSuite]$ ls -l *.sh -rwxr-x--- 1 dmadmin dmadmin 13479 Oct 4 09:15 LSConfigImport.sh -rwxr-x--- 1 dmadmin dmadmin 4231 Oct 4 09:15 iHubConfigImport.sh -rwxr-x--- 1 dmadmin dmadmin 8384 Oct 4 09:15 install.sh -rwxr-x--- 1 dmadmin dmadmin 3096 Oct 4 09:15 myInsightPostInstall.sh [dmadmin@cs-0 LSSuite]$ [dmadmin@cs-0 LSSuite]$ find . -name registerOracleVersionView.sh ./scripts/registerOracleVersionView.sh [dmadmin@cs-0 LSSuite]$ [dmadmin@cs-0 LSSuite]$ cd ./scripts/ [dmadmin@cs-0 scripts]$ [dmadmin@cs-0 scripts]$ cat registerOracleVersionView.sh if "$4" == "oracle" then idql "$1" -U"$2" -P"$3" -R"./scripts/$4/oracleVersion.dql" fi [dmadmin@cs-0 scripts]$
If you are familiar with bash/shell scripting, you probably already saw what’s wrong with the script. It’s simply that this isn’t the correct way to write IF statements. I won’t go into the details of the correct formatting (one bracket, two brackets, with test command, aso…) because there are already plenty of documentation around that online but that’s definitively not a correct way to write IF statements. So, to correct this script, I opened the OpenText SR#4450083 and provided them the commands to fix it in a future patch/release. I didn’t receive a confirmation yet but it should be in the next LSS release. In the meanwhile, I put the workaround on my silent install script (if the correct format is already there it won’t be anything but if it’s not, then it will correct the file):
[dmadmin@cs-0 scripts]$ cat registerOracleVersionView.sh if "$4" == "oracle" then idql "$1" -U"$2" -P"$3" -R"./scripts/$4/oracleVersion.dql" fi [dmadmin@cs-0 scripts]$ [dmadmin@cs-0 scripts]$ ./registerOracleVersionView.sh Repo01 dmadmin xxx oracle ./registerOracleVersionView.sh: line 1: oracle: command not found [dmadmin@cs-0 scripts]$ [dmadmin@cs-0 scripts]$ sed -i -e 's,^if[[:space:]]*",if [[ ",' -e 's,^if [[ .*"$,& ]],' registerOracleVersionView.sh [dmadmin@cs-0 scripts]$ [dmadmin@cs-0 scripts]$ cat registerOracleVersionView.sh if [[ "$4" == "oracle" ]] then idql "$1" -U"$2" -P"$3" -R"./scripts/$4/oracleVersion.dql" fi [dmadmin@cs-0 scripts]$ [dmadmin@cs-0 scripts]$ ./registerOracleVersionView.sh Repo01 dmadmin xxx oracle OpenText Documentum idql - Interactive document query interface Copyright (c) 2018. OpenText Corporation All rights reserved. Client Library Release 16.4.0170.0080 Connecting to Server using docbase Repo01 [DM_SESSION_I_SESSION_START]info: "Session 010f1234800113af started for user dmadmin." Connected to OpenText Documentum Server running Release 16.4.0170.0234 Linux64.Oracle 1> 2> result ------------ T (1 row affected) 1> 2> new_object_ID ---------------- 190f1234800edc59 (1 row affected) 1> [dmadmin@cs-0 scripts]$ [dmadmin@cs-0 scripts]$ cat ./scripts/oracle/oracleVersion.dql execute exec_sql with query = 'create view oracle_version as select * from v$version' go REGISTER TABLE dm_dbo.oracle_version (banner String(80)) go[dmadmin@cs-0 scripts]$
As you can see above, the shell executes a DQL script “oracleVersion.dql”. This simply creates a new view “oracle_version”. I have no clue where this might be used in LSS but what I can tell you is that this script was already wrong in LSS 16.6.0 (released in Jul 2019 I believe) and nobody complained about it so far apparently, so maybe you can wait for the official fix from OpenText or you can fix it yourself like I did, up to you!