Trying to build the web policy agents may be a little frustrating at times, especially because it is generally not that well documented. As part of the 3.3.3 agent release I had the joy of going through the build process of the Linux web agents, so here you go, here are the steps I’ve gone through to build the agents on a freshly installed CentOS 5.10 (32 & 64 bit). For the very keen, I’ve also aggregated all the commands into shell scripts, you can find them at the bottom of this post.
Thanks to Peter Major Blog : https://blogs.forgerock.org/petermajor/2014/08/how-to-compile-3-3-2-web-agents-on-linux/
On an out of the box CentOS 5.10 installation gcc is already installed, but there are some other components you should make sure you have installed before attempting to compile the agents:
- subversion: To check out the source code of the agents.
- ant: To perform the build, the agents are using Ant scripts to define the build steps.
- zlib-devel: Compilation time dependency.
- gcc-c++: C++ compiler.
- rpm-build: RPM packages are being generated as part of the build process.
- gcc44: Building NSS requires a newer GCC than the default one.
- java-1.6.0-openjdk-devel: JDK to be able to build the agent installers (and run the Ant scripts).
The agent dependencies
The agents rely on the following external libraries:
- NSS 3.16.3 & NSPR 4.10.6
On 32 bit the component should be built with:
make BUILD_OPT=1 NS_USE_GCC=1 NSS_ENABLE_ECC=1 NSDISTMODE="copy" CC="/usr/bin/gcc44 -Wl,-R,'\$\$ORIGIN/../lib' -Wl,-R,'\$\$ORIGIN'" nss_build_all
On 64 bit the command is:
make USE_64=1 BUILD_OPT=1 NS_USE_GCC=1 NSS_ENABLE_ECC=1 NSDISTMODE="copy" CC="/usr/bin/gcc44 -Wl,-R,'\$\$ORIGIN/../lib' -Wl,-R,'\$\$ORIGIN'" nss_build_all
- PCRE 8.31
On 32 bit:
./configure --with-pic --enable-newline-is-anycrlf --disable-cpp
On 64 bit:
CC="gcc -m64" CXX="g++ -m64" ./configure --with-pic --enable-newline-is-anycrlf --disable-cpp
- libxml2 2.9.1
On either platform:
./configure --prefix=/opt/libxml2 --with-threads --with-pic --without-iconv --without-python --without-readline
- The header files of various web containers
Once all the libraries are in place, you can run the build on 32 bit:
on 64 bit:
ant nightly -Dbuild.type=64