When AEM FORMS (formerly Adobe LiveCycle) is deployed on Linux, you have to ensure that 32-bit versions of a set of shared libraries are installed and available. This is because most of the heavy lifting of AEM FORMS workloads are performed by C++ libraries from the LiveCycle days that Adobe never ported to 64-bit. The required libraries are listed below. The descriptions are from the packages themselves. More here.
- expat (Stream-oriented XML parser C library for parsing XML, written by James Clark)
- fontconfig (Font configuration and customization library designed to locate fonts within the system and select them according to requirements specified by applications)
- freetype (Font rendering engine, developed to provide advanced font support for a variety of platforms and environments. It can open and manages font files as well as efficiently load, hint and render individual glyphs. It is not a font server or a complete text-rendering library)
- glibc (Core libraries for the GNU system and GNU/Linux systems, as well as many other systems that use Linux as the kernel)
- libcurl (Client-side URL transfer library)
- libICE (Inter-Client Exchange Library)
- libicu (Library that provides robust and full-featured Unicode and locale support - International Components for Unicode). Both 64-bit and 32-bit editions of this library is required
- libSM (X11 Session Management library)
- libuuid (DCE compatible Universally Unique Identifier library - used to generate unique identifiers for objects that may be accessible beyond the local system)
- libX11 (X11 client-side library)
- libXau (X11 Authorization Protocol - useful for restricting client access to the display)
- libxcb (X protocol C-language Binding - XCB)
- libXext (Library for common extensions to the X11 protocol)
- libXinerama (X11 extension which provides support for extending a desktop across multiple displays. The name is a pun on Cinerama, a widescreen movie format which used multiple projectors. libXinerama is the library which interfaces with the RandR extension)
- libXrandr (Xinerama extension is largely obsolete nowadays - it has been replaced by the RandR extension)
- libXrender (X Rendering Extension client library)
- nss-softokn-freebl (Freebl library for Network Security Services)
- zlib (General-purpose, patent-free, lossless data compression library)
From Red Hat Enterprise Linux 6 onwards, the 32-bit edition of a library will have the filename extension .686 while the 64-bit edition will have .x86_64. Example, expat.i686. Prior to RHEL 6, 32-bit editions had the extension .i386. Before installing the 32-bit editions, make sure the latest 64-bit editions are installed. If the 64-bit edition of a library is older than the 32-bit version being installed, you will get an error such as below:
[0mError: Protected multilib versions: libsepol-2.5-10.el7.x86_64 != libsepol-2.5-6.el7.i686 [0mError: Multilib version problems found.
First Time Install
On Red Hat Enterprise Linux, use the YellowDog Update Modifier (YUM) to install, as shown below:
Symlinks
Additionally, you need to create libcurl.so, libcrypto.so, and libssl.so symlinks pointing to the latest 32-bit versions of the libcurl, libcrypto, and libssl libraries respectively. You can find the files in /usr/lib/
ln -s /usr/lib/libcurl.so.4.5.0 /usr/lib/libcurl.so
ln -s /usr/lib/libcrypto.so.1.1.1c /usr/lib/libcrypto.so
ln -s /usr/lib/libssl.so.1.1.1c /usr/lib/libssl.so
Updates to Existing System
There can be conflicts between the x86_64 and i686 architectures during updates, such as this:
Error: Transaction check error:
file /lib/ld-2.28.so from install of glibc-2.28-72.el8.i686 conflicts with file from package glibc32-2.28-42.1.el8.x86_64
If you run into this, un-install the offending package first, like in this case:
yum remove glibc32-2.28-42.1.el8.x86_64
All said and done, you want the x86_64 and i686 versions to be exactly the same, as for example from this output to the command:
yum info glibc
Last metadata expiration check: 0:41:33 ago on Sat 18 Jan 2020 11:37:08 AM EST.
Installed Packages
Name : glibc
Version : 2.28
Release : 72.el8
Architecture : i686
Size : 13 M
Source : glibc-2.28-72.el8.src.rpm
Repository : @System
From repo : BaseOS
Summary : The GNU libc libraries
URL : http://www.gnu.org/software/glibc/
License : LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL
Description : The glibc package contains standard libraries which are used by
: multiple programs on the system. In order to save disk space and
: memory, as well as to make upgrading easier, common system code is
: kept in one place and shared between programs. This particular package
: contains the most important sets of shared libraries: the standard C
: library and the standard math library. Without these two libraries, a
: Linux system will not function.
Name : glibc
Version : 2.28
Release : 72.el8
Architecture : x86_64
Size : 15 M
Source : glibc-2.28-72.el8.src.rpm
Repository : @System
From repo : BaseOS
Summary : The GNU libc libraries
URL : http://www.gnu.org/software/glibc/
License : LGPLv2+ and LGPLv2+ with exceptions and GPLv2+ and GPLv2+ with exceptions and BSD and Inner-Net and ISC and Public Domain and GFDL
Description : The glibc package contains standard libraries which are used by
: multiple programs on the system. In order to save disk space and
: memory, as well as to make upgrading easier, common system code is
: kept in one place and shared between programs. This particular package
: contains the most important sets of shared libraries: the standard C
: library and the standard math library. Without these two libraries, a
: Linux system will not function.
Useful yum Commands
Commonly used yum commands:
yum list installed
yum search [part_of_package_name]
yum whatprovides [package_name]
yum install [package_name]
yum reinstall [package_name]
yum info [package_name]
yum deplist [package_name]
yum remove [package_name]
yum check-update [package_name]
yum update [package_name]