RPM Packaging Informix IDS 11.70 for CentOS 7
This is a rough version of my documentation for installing informix inside a container and then package it as RPM, I put it here in case it benefits anything else.
Stand Alone Install
- Make sure you have the `rpm-build` package installed
- Log in to the computer as root user if you want to perform a root installation that will run as privileged user informix.
- Ensure that user informix and group informix exist on your system if you want to perform a root installation that will run with root-level privileges.
I started a clean CentOS 7 docker container, and run the installer inside it, and I also record the installation with `-r`
mkdir /tmp/informix-installer
tar -C /tmp/informix-installer/ -xvf ~builder/rpmbuild/SOURCES/iif.11.70.FC8DE.linux-x86_64.tar
cd /tmp/informix-installer
./ids_install -r /tmp/ids_install.answerfile -i console -DLICENSE_ACCEPTED=TRUE -DUSER_INSTALL_DIR=/opt/informix
===============================================================================
Installation Goals
------------------
What do you want to accomplish?
1- Install products and features
2- Extract the product files (-DLEGACY option)
*3- Create an RPM image pakcage
ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS ENTER TO ACCEPT THE DEFAULT:: 3
===============================================================================
Installation Location
---------------------
Choose location _for software installation
Default Install Folder: /opt/informix
ENTER AN ABSOLUTE PATH, OR PRESS <ENTER> TO ACCEPT THE DEFAULT
: /opt/informix
===============================================================================
Choose Product Features
-----------------------
ENTER A COMMA_SEPARATED LIST OF NUMBERS REPRESENTING THE FEATURES YOU WOULD
LIKE TO SELECT, OR DESELECT. TO VIEW A FEATURES DESCRIPTION, ENTER
'?<NUMBER>'. PRESS <RETURN> WHEN YOU ARE DONE:
1- [X] IBM Informix database server
2- |-[X] Base Server
3- |-[X] Extensions and tools
4- |-[X] J/Foundation
5- |-[X] Database extensions
6- |-[X] Conversion and reversion support
7- |-[X] XML publishing
8- |-[X] Demonstration database scripts
9- |-[X] Enterprise Replication
10- |-[X] Data loading utilities
11- |-[X] onunload and onload utilities
12- |-[X] dbload utility
13- |-[X] High-Performance Loader
14- |-[X] Backup and Restore
15- |-[X] archecker utility
16- |-[X] ON-Bar utility
17- |-[X] Informix Storage Manager
18- |-[X] Informix interface to Tivoli Storage Manager
19- |-[X] Administrative utilities
20- |-[X] Performance monitoring utilities
21- |-[X] Miscellaneous monitoring utilities
22- |-[X] Auditing utilities
23- |-[X] Database import and export utilities
24- [X] IBM Informix Client SDK
25- |-[X] IBM Informix Object Interface for C++
26- |-[X] IBM Informix Object Interface for C++ demos
27- |-[X] IBM Informix ESQL/C
28- |-[X] IBM Informix ESQL/C demos
29- |-[X] 7.2 application compatibility module
30- |-[X] IBM Informix LIBDMI for client applications
31- |-[X] IBM Informix ODBC Driver
32- |-[X] IBM Informix ODBC Driver demos
33- [ ] IBM Informix Connect
34- |-[ ] IBM Informix Object Interface for C++
35- |-[ ] IBM Informix ESQL/C
36- |-[ ] 7.2 application compatibility module
37- |-[ ] IBM Informix LIBDMI for client applications
38- |-[ ] IBM Informix ODBC Driver
39- [X] IBM Informix JDBC
40- [X] Global Language Support (GLS)
41- |-[X] West European and Americas
42- |-[X] East European and Slavic
43- |-[X] Chinese
44- |-[X] Japanese
45- |-[X] Korean
46- |-[X] Thai
47- [ ] IBM Informix OpenAdmin Tool
48- |-[ ] IBM Informix Replication Plug-in for OpenAdmin Tool
49- |-[ ] IBM Informix Schema Manager Plug-in for OpenAdmin Tool
50- |-[ ] IBM Informix TimeSeries Plug-in for OpenAdmin Tool
51- |-[ ] IBM Informix Health Advisor Plug-in for OpenAdmin Tool
Installation Summary
===============================================================================
Product Name:
IBM Informix Software Bundle
Install Folder:
/opt/informix
Product Features:
IBM Informix database server,
Base Server,
Extensions and tools,
J/Foundation,
Database extensions,
Conversion and reversion support,
XML publishing,
Demonstration database scripts,
Enterprise Replication,
Data loading utilities,
onunload and onload utilities,
dbload utility,
High-Performance Loader,
Backup and Restore,
archecker utility,
ON-Bar utility,
Informix Storage Manager,
Informix interface to Tivoli Storage Manager,
Administrative utilities,
Performance monitoring utilities,
Miscellaneous monitoring utilities,
Auditing utilities,
Database import and export utilities,
IBM Informix Client SDK,
IBM Informix Object Interface for C++,
IBM Informix Object Interface for C++ demos,
IBM Informix ESQL/C,
7.2 application compatibility module,
IBM Informix ESQL/C demos,
IBM Informix LIBDMI for client applications,
IBM Informix ODBC Driver,
IBM Informix ODBC Driver demos,
Global Language Support (GLS),
West European and Americas,
East European and Slavic,
Japanese,
Korean,
Chinese,
Thai,
IBM Informix JDBC
RPM image location:
/opt/informix/RPMS/x86_64/informix-11.70.FC8-0.x86_64.rpm
Disk Space Information (for Installation Target):
Required: 587,782,910 Bytes
Available: 8,693,800,960 Bytes
PRESS <ENTER> TO CONTINUE:
===============================================================================
Ready To Install
----------------
InstallAnywhere is now ready to install IBM Informix Software Bundle onto your
system at the following location:
/opt/informix
PRESS <ENTER> TO INSTALL:
===============================================================================
Installing...
-------------
[==================|==================|==================|==================]
[------------------|------------------|------------------|------------------]
===============================================================================
Installation Complete
---------------------
Congratulations! IBM Informix Software Bundle installation is complete.
Product install status:
IBM Informix 11.70: Successful
IBM Informix Client-SDK: Successful
IBM Informix JDBC Driver: Successful
RPM Generation: Failed
Look at
/opt/informix/rpmbuild.log
/opt/informix/IBM_Informix_Software_Bundle_InstallLog.log
For more information about using Informix products, see the IBM Informix 11.70
Information Center at
http://publib.boulder.ibm.com/infocenter/idshelp/v117/index.jsp.
As you can see the the RPM build failed, looking into the log file `/opt/informix/rpmbuild`, show this lines
+ umask 022
+ cd /opt/informix/BUILD
+ echo rpm prefix=/opt/informix
rpm prefix=/opt/informix
+ rm -rf /opt/informix/BUILDROOT/informix-11.70.FC8-0.x86_64/opt
+ rm -rf /opt/informix/BUILDROOT/informix-11.70.FC8-0.x86_64/tmp
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.Evs55O
+ umask 022
+ cd /opt/informix/BUILD
+ mkdir -p /opt/informix/BUILDROOT/informix-11.70.FC8-0.x86_64/opt/informix
+ cd /opt/informix/BUILDROOT/informix-11.70.FC8-0.x86_64/opt/informix
+ tar -xpjf /opt/informix/SOURCES/iif-1170.bz2
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.BQCSuL
+ umask 022
+ cd /opt/informix/BUILD
+ '[' /opt/informix/BUILDROOT/informix-11.70.FC8-0.x86_64 '!=' / ']'
+ rm -rf /opt/informix/BUILDROOT/informix-11.70.FC8-0.x86_64
++ dirname /opt/informix/BUILDROOT/informix-11.70.FC8-0.x86_64
+ mkdir -p /opt/informix/BUILDROOT
+ mkdir /opt/informix/BUILDROOT/informix-11.70.FC8-0.x86_64
+ export DONT_STRIP=1
+ DONT_STRIP=1
+ '[' '%{buildarch}' = noarch ']'
+ QA_CHECK_RPATHS=0
+ case "${QA_CHECK_RPATHS:-}" in
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip /usr/bin/strip
+ /usr/lib/rpm/redhat/brp-strip-comment-note /usr/bin/strip /usr/bin/objdump
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
+ /usr/lib/rpm/redhat/brp-python-hardlink
Processing files: informix-11.70.FC8-0.x86_64
error: File not found: /opt/informix/BUILDROOT/informix-11.70.FC8-0.x86_64/opt/informix/rpm_postinstall.sh
error: File not found by glob: /opt/informix/BUILDROOT/informix-11.70.FC8-0.x86_64/opt/informix/extend/krakatoa/jre/*
error: File not found by glob: /opt/informix/BUILDROOT/informix-11.70.FC8-0.x86_64/opt/informix/license/*
...
So I took the spec file from `/opt/informix/SPECS/iif.spec`, And did some changes to it, (you can find up-2-date version of it on TODO: add link to github gist)
%define informixdir /opt/informix
%define _prefix %{informixdir}
%define __os_post_install %{nil}
%define __jar_repack %{nil}
%define __check_files %{nil}
Summary: IBM Informix Dynamic Server + J/Foundation
Vendor: IBM Corporation
Group: Applications/Databases
Name: informix
Version: 11.70.FC8
Release: 1
License: IBM Software License Agreement
Source0: iif-1170.tar.bz2
Packager: IBM Corporation
URL: http://www.ibm.com/software/data/informix/
AutoReqProv: no
ExclusiveArch: x86_64
ExclusiveOS: Linux
Conflicts: informix-csdk
Requires: shadow-utils file ksh
Provides: %{informixdir}/lib/cli/libifcli.so
Provides: %{informixdir}/lib/cli/libifdmr.so
Provides: %{informixdir}/lib/esql/libifgen.so
Provides: %{informixdir}/lib/esql/libifgls.so
Provides: %{informixdir}/lib/esql/libifglx.so
Provides: %{informixdir}/lib/esql/libifos.so
Provides: %{informixdir}/lib/esql/libifsql.so
Provides: %{informixdir}/lib/libifasf.so
#BuildRoot: %{_topdir}/BUILD/
#Prefix: /opt/informix
%description
IBM Informix Dynamic Server + J/Foundation
%prep
echo rpm prefix=%{_prefix}
rm -rf ${RPM_BUILD_ROOT}/opt
rm -rf ${RPM_BUILD_ROOT}/tmp
%build
%pre
getent group informix >/dev/null || \
groupadd -r informix
getent passwd informix >/dev/null || \
useradd -r -g informix -d %{informixdir} -s /sbin/nologin informix
exit 0
%install
#export DONT_STRIP=1
mkdir -p ${RPM_BUILD_ROOT}%{informixdir} && cd ${RPM_BUILD_ROOT}%{informixdir}
tar -C ${RPM_BUILD_ROOT}%{informixdir} -xvjf %{SOURCE0}
%{__rm} -rf ${RPM_BUILD_ROOT}%{informixdir}/IBM_Informix_Client_SDK_Install_*.log
%{__rm} -rf ${RPM_BUILD_ROOT}%{informixdir}/IBM_Informix_GLS_Install_*.log
%{__rm} -rf ${RPM_BUILD_ROOT}%{informixdir}/uninstall/uninstall_clientsdk
%{__rm} -rf ${RPM_BUILD_ROOT}%{informixdir}/uninstall_csdk
%{__rm} -f ${RPM_BUILD_ROOT}%{informixdir}/tmp/*
%{__rm} -rf ${RPM_BUILD_ROOT}%{informixdir}/extend/krakatoa/jre
%{__rm} -rf ${RPM_BUILD_ROOT}%{informixdir}/extend/krakatoa/docs/launchpad/splash/{hpuxparisc,linuxs390,sunsparc,hpuxia64,linuxppc}/AZY_Splash
%post
licensefile=`rpm -ql informix | grep 'license/English.txt$'`
licensedir=`dirname $licensefile`
INFORMIXDIR=`dirname $licensedir`
cd $INFORMIXDIR
chmod 755 rpm_postinstall.sh
[ -f ./rpm_postinstall.sh ] && nohup ./rpm_postinstall.sh > /dev/null 2>&1
#run installgskit script
[ -f ./gskit/installgskit ] && nohup ./gskit/installgskit > /dev/null 2>&1
%clean
#rm -rf ${RPM_BUILD_ROOT}
#rm -rf %{_topdir}/SOURCES
#rm -rf %{_topdir}/SRPMS
%preun
licensefile=`rpm -ql informix | grep 'license/English.txt$'`
licensedir=`dirname $licensefile`
INFORMIXDIR=`dirname $licensedir`
[ -f /tmp/.informix-install-rpm-location ] &amp;&amp; rm -f /tmp/.informix-install-rpm-location
echo $INFORMIXDIR >> /tmp/.informix-install-rpm-location
%postun
if [ -f /tmp/.informix-install-rpm-location -a $1 -eq 0 ]
then
INFORMIXDIR=`cat /tmp/.informix-install-rpm-location`
cd $INFORMIXDIR
for dir in SDK release properties jdbc incl help gls extend doc demo snmp msg license lib ism isa gskit forms etc dbssodir aaodir bin
do
if [ -d $dir ]
then
find $INFORMIXDIR/$dir -depth -empty -type d -exec rmdir '{}' \;
fi
done
rm -f /tmp/.informix-install-rpm-location
fi
%files
# removed ..
- Also had to set
QA_CHECK_RPATHS=0in~/.rpmmacrosto pass the rpath checks. - Also removed the
jre/folder to reduce some space. - And build with:
rpmbuild -bb ~builder/rpmbuild/SPECS/iif.spec
Extra – Create a RPM repo
- Copy the file to a Webserver and rebuild the repodata
rsync --delete -Prci RPMS/ my-repo.example.com:/www/repo/RPMS/ ssh my-repo.example.repo -- "createrepo /www/repo/RPMS"
this allow me to set a repo url for yum and install informix from it
Troobulshooting
Prerequisite Verification Check fails
If during the installation you encounter this message,
=============================================================================== Prerequisite Verification Check ------------------------------- One or more prerequisite system libraries are not installed on your computer. Install libm.so.6, libc.so.6 and then restart the IBM Informix installation program. The installation cannot succeed until the minimum requirements are met. For more information about the prerequisites, see your Installation Guide or check with your System Administrator. PRESS <ENTER> TO ACCEPT THE FOLLOWING (OK):
Set the `LD_LIBRARY_PATH` with
export LD_LIBRARY_PATH=/lib64
And try to run the installer again.