IBM Support

Manually installing IBM Rational Build Forge 7.1.x on UNIX or Linux

Technote (FAQ)


How can I manually install IBM Rational Build Forge 7.1.x on UNIX or Linux? This technote covers step-by-step directions for completing the manual installation process, which should only be used when IBM Installation Manager is not available.


ADVISORY: In general, this manual process should only be used when use of the IBM Installation Manager is not an option, as the level of difficulty for this manual procedure is much higher (over using the IBM Installation Manager method).

The manual installation process laid out in this technote assume that you have followed the pre-installation steps, such as:

  • Setting up the database and the database client
  • You have the JDBC driver for your chosen database
  • You are running as root with a umask of 002. If this is not the case, review the final section regarding file and directory security.

Several directories must be created by hand prior to beginning the install. In addition, you must prepare a response file for the installer to work properly.

Additional Note: When using WebSphere as the Applications Server (WAS), starting Build Forge as a service will not work. You will need to have WAS started first.


1. Create the installation path for Build Forge and installation paths for the install

These directories will be used for the installation process. The beginning piece - /opt/buildforge - can be replaced with another directory of your choice if desired. If you do use an alternative directory ensure you reflect that directory in the other places /opt/buildforge shows up in this tech note. In addition the /opt/buildforge/temp directory needs to be world writable a Apache and the Build Forge engine will use this directory for temp space.

mkdir /opt
mkdir /opt/buildforge
mkdir /opt/buildforge/temp
chmod 777 /opt/buildforge/temp
mkdir /opt/buildforge/Manager
mkdir /opt/buildforge/Manager/depo

2. Copy the install package files to the /opt/buildforge/Manager/depo directory with the correct names

On the media, or within the .zip file you downloaded you will have a number of files and directories similar to the following:

drwxr-xr-x 2 root root 4096 Dec 5 16:29 toc
drwxr-xr-x 4 root root 4096 Dec 5 16:29 md
-rwxr--r-- 1 root root 5519 Dec 5 16:31
-rwxr--r-- 1 root root 1136 Dec 5 16:31 launchpad.ini
-rwxr--r-- 1 root root 184320 Dec 5 16:31 launchpad.exe
drwxr-xr-x 35 root root 4096 Dec 5 16:31 launchpad
drwxr-xr-x 8 root root 4096 Dec 5 16:30 InstallerImage_win32
drwxr-xr-x 8 root root 4096 Dec 5 16:30 InstallerImage_solaris
drwxr-xr-x 9 root root 4096 Dec 5 16:30 InstallerImage_linux
drwxr-xr-x 12 root root 4096 Dec 5 16:29 documentation
-rwxr--r-- 1 root root 190 Dec 5 16:29 diskTag.inf
-rw-r--r-- 1 root root 1329003370 May 12 15:11
-rwxr--r-- 1 root root 995 Dec 5 16:31 autorun.inf
drwxr-xr-x 2 root root 4096 Dec 5 16:29 agents
drwxr-xr-x 5 root root 4096 Dec 5 16:29 ad
drwxr-xr-x 4 root root 4096 May 13 07:46 ..
drwxr-xr-x 11 root root 4096 May 13 07:48 .

The files we need are contained within the ad/native directory from this area. In here you will see a number of files similar to the following:

# cd ad/native
# ls -la
total 1043540
drwxr-xr-x 2 root root 4096 Dec 5 16:29 .
drwxr-xr-x 5 root root 4096 Dec 5 16:29 ..
-rwxr--r-- 1 root root 3151932 Dec 5 16:29 file000001
-rwxr--r-- 1 root root 34154005 Dec 5 16:29 file000002
-rwxr--r-- 1 root root 24422749 Dec 5 16:29 file000003
-rwxr--r-- 1 root root 370529905 Dec 5 16:29 file000004
-rwxr--r-- 1 root root 73747787 Dec 5 16:29 file000005
-rwxr--r-- 1 root root 74075179 Dec 5 16:29 file000006
-rwxr--r-- 1 root root 32414089 Dec 5 16:29 file000007
-rwxr--r-- 1 root root 75752874 Dec 5 16:29 file000008
-rwxr--r-- 1 root root 65803775 Dec 5 16:29 file000009
-rwxr--r-- 1 root root 2763250 Dec 5 16:29 file000010
-rwxr--r-- 1 root root 20475 Dec 5 16:29 file000011
-rwxr--r-- 1 root root 6041154 Dec 5 16:29 file000012
-rwxr--r-- 1 root root 926496 Dec 5 16:29 file000013
-rwxr--r-- 1 root root 14529856 Dec 5 16:29 file000014
-rwxr--r-- 1 root root 29940203 Dec 5 16:29 file000015
-rwxr--r-- 1 root root 83163799 Dec 5 16:29 file000016
-rwxr--r-- 1 root root 56909977 Dec 5 16:29 file000017
-rwxr--r-- 1 root root 3248989 Dec 5 16:29 file000018
-rwxr--r-- 1 root root 20475 Dec 5 16:29 file000019
-rwxr--r-- 1 root root 6041155 Dec 5 16:29 file000020
-rwxr--r-- 1 root root 9815409 Dec 5 16:29 file000021
-rwxr--r-- 1 root root 92756618 Dec 5 16:29 file000022
-rwxr--r-- 1 root root 12534 Dec 5 16:29 file000023
-rwxr--r-- 1 root root 3299846 Dec 5 16:29 file000024
-rwxr--r-- 1 root root 3717373 Dec 5 16:29 file000025
-rwxr--r-- 1 root root 1775 Dec 5 16:29 toc.xml

These file000... files need to be renamed for your target system's environment. The toc.xml file helps with this conversion as it points the file000... alias to the actual names of the files.

For example:

# cat toc.xml

<?xml version='1.0' encoding='UTF-8'?>
<?toc version='0.0.1'?>
<toc fileCount='33'>
<file name='file000001' alias=''/>
<file name='file000002' alias=''/>
<file name='file000003' alias=''/>
<file name='file000004' alias=''/>
<file name='file000005' alias=''/>
<file name='file000006' alias=''/>
<file name='file000007' alias=''/>
<file name='file000008' alias=''/>
<file name='file000009' alias=''/>
<file name='file000010' alias=''/>
<file name='file000011' alias=''/>
<file name='file000012' alias=''/>
<file name='file000013' alias=''/>
<file name='file000014' alias=''/>
<file name='file000015' alias=''/>
<file name='file000016' alias=''/>
<file name='file000017' alias=''/>
<file name='file000018' alias=''/>
<file name='file000019' alias=''/>
<file name='file000020' alias=''/>
<file name='file000021' alias=''/>
<file name='file000022' alias=''/>
<file name='file000023' alias=''/>
<file name='file000024' alias=''/>
<file name='file000025' alias=''/>
<file name='file000026' alias=''/>
<file name='file000027' alias=''/>
<file name='file000028' alias=''/>
<file name='file000029' alias=''/>
<file name='file000030' alias=''/>
<file name='file000031' alias=''/>
<file name='file000032' alias=''/>
<file name='file000033' alias=''/>

Note: You will need to review the toc.xml which ships with your package as the conversion of the file names to what they are could vary. This toc.xml was retrieved from the 7.1 install repository.

For this example we will grab all of the core files first and then grab all of the OS specific files.

Core files:

The OS specific files use the naming convention as follows:

Windows omits the <platform> piece. For example the alias is for Windows and is for Linux.

Linux OS specific files:

Solaris Specific files:

AIX Specific files (7.1.1):

Windows Specific files. (These are here for reference only):

Note: is only used for Windows and only if you are installing the packaged DB2 Express for Build Forge.

Finally you will need the universal installer package.

Linux installer package:

Solaris installer package:

AIX installer package (7.1.1):

Windows installer package (Reference only):

RAFW (7.1.1):

NOTE: The Rational Automation Framework for Websphere (RAFW) is an additional purchase on top of Build Forge. Only enable and follow directions labelled RAFW if you have made this additional purchase and have the licenses for it.

All of these zip files need to be placed into the /opt/buildforge/Manager/depo directory except for the installer package. The installer gets placed directly into /opt/buildforge/Manager one level up.

Linux 7.1:
cp file000022 /opt/buildforge/Manager/depo/
cp file000003 /opt/buildforge/Manager/depo/
cp file000014 /opt/buildforge/Manager/depo/
cp file000007 /opt/buildforge/Manager/depo/
cp file000008 /opt/buildforge/Manager/depo/
cp file000009 /opt/buildforge/Manager/depo/
cp file000010 /opt/buildforge/Manager/depo/
cp file000011 /opt/buildforge/Manager/depo/
cp file000012 /opt/buildforge/Manager/depo/
cp file000024 /opt/buildforge/Manager/

Linux 7.1.1:
cp file000030 /opt/buildforge/Manager/depo/
cp file000010 /opt/buildforge/Manager/depo/
cp file000022 /opt/buildforge/Manager/depo/
cp file000014 /opt/buildforge/Manager/depo/
cp file000015 /opt/buildforge/Manager/depo/
cp file000016 /opt/buildforge/Manager/depo/
cp file000017 /opt/buildforge/Manager/depo/
cp file000018 /opt/buildforge/Manager/depo/
cp file000019 /opt/buildforge/Manager/depo/
cp file000032 /opt/buildforge/Manager/

Solaris 7.1:
cp file000022 /opt/buildforge/Manager/depo/
cp file000003 /opt/buildforge/Manager/depo/
cp file000014 /opt/buildforge/Manager/depo/
cp file000015 /opt/buildforge/Manager/depo/
cp file000016 /opt/buildforge/Manager/depo/
cp file000017 /opt/buildforge/Manager/depo/
cp file000018 /opt/buildforge/Manager/depo/
cp file000019 /opt/buildforge/Manager/depo/
cp file000020 /opt/buildforge/Manager/depo/
cp file000025 /opt/buildforge/Manager/

Solaris 7.1.1:
cp file000030 /opt/buildforge/Manager/depo/
cp file000010 /opt/buildforge/Manager/depo/
cp file000022 /opt/buildforge/Manager/depo/
cp file000023 /opt/buildforge/Manager/depo/
cp file000024 /opt/buildforge/Manager/depo/
cp file000025 /opt/buildforge/Manager/depo/
cp file000026 /opt/buildforge/Manager/depo/
cp file000027 /opt/buildforge/Manager/depo/
cp file000028 /opt/buildforge/Manager/depo/
cp file000033 /opt/buildforge/Manager/depo/

AIX (7.1.1):
cp file000030 /opt/buildforge/Manager/depo/
cp file000010 /opt/buildforge/Manager/depo/
cp file000022 /opt/buildforge/Manager/depo/
cp file000003 /opt/buildforge/Manager/depo/
cp file000004 /opt/buildforge/Manager/depo/
cp file000005 /opt/buildforge/Manager/depo/
cp file000006 /opt/buildforge/Manager/depo/
cp file000007 /opt/buildforge/Manager/depo/
cp file000008 /opt/buildforge/Manager/depo/
cp file000001 /opt/buildforge/Manager/depo/

RAFW (7.1.1):
cp file000021 /opt/buildforge/Manager/depo/

3. Unzip all of the packages just copied into /opt/buildforge/Manager/depo and the installer in /opt/buildforge/Manager

cd /opt/buildforge/Manager/depo
for ii in *.zip; do
unzip $ii
cd ..
unzip *.zip

You will now see a main file and a lang directory the /opt/buildforge/Manager directory in addition to the depo directory and bfinstall zip file for your platform.

# ls -la
total 9928
drwxr-xr-x 5 root root 4096 May 14 08:16 .
drwxr-xr-x 11 root root 4096 May 14 08:20 ..
drwxr-xr-x 2 root root 4096 May 13 15:56 depo
drwxr-xr-x 2 root root 4096 Dec 5 16:00 lang
-rwxr--r-- 1 root root 3299846 May 13 15:55
-rwxr-xr-x 1 root root 4255824 Dec 5 16:00 main

4. Prepare the response file

The response file needs to reside with the main executable. In this example this will be the /opt/buildforge/Manager directory. The name does not matter, however for the purposes of this technote we will use main.res for the response file name. This file can be broken down into required items, database specific items and conditional items. This is a collection of key=value pairs of information. Care must be taken here as the manual install does not check the validity of the entries. The defaults are marked as bold.
Core entries:
install_path [path] Install location i.e. /opt/buildforge
install_repo [path] directory to the packages i.e. /opt/buildforge/Manager/depo
license_host [license server hostname] This is the ip address or hostname of your rational

Enterprise Plus:

<path to BF distribution>/license/

license_port [license server port] This is the port your rational license server is listening on (27000)

Enterprise Plus:

Set this option to FILE

db_schema_question [y|n]

y= Apply the Build Forge schema to the database using the new bfschema tool. Only needed if the schema is not already applied.

n=Do not apply the Build Forge schema to the database. Choose this option if the Build Forge tables already exist, or you are planning on manually running the bfschema tool per step 6.

db_host [BF database host] The ip address/hostname of your database
db_port [BF database port] The port your database is listening on
db_name [BF database name] The name of your database instance
db_username [BF database user account] The user you will connect to your database as
db_password [BF DB user account password] The password you will use for the above password.
db_password_encrypted [y|n]

y=The db_password is iven in encrypted format.

n=The db_password is given as clear text. Note:This will always be the choice for a manual install.

db_type [db2|mysql|oracle] The database type you will be using
console_type [normal] CAUTION: MUST be set to "normal"
keystore_password !!REQUIRED!! This is a password that is used for either the generated certificate or the exported one. This password doesn't exist, make one up that you will remember
postinstall_start [start|nostart]

start=Start the Build Forge engine when install completes

nostart=Do nt start the engine after install completes. You will need to manually start the engine using the /opt/buildforge/rc/buildforge start script.

keystore_password_encrypted [y|n] Is the above password encrypted. This will be "n" for a manual install.
= l
Database specific items:
db_schema [schema name] The schema the database will reside in.
driver_lib [path] The directory that holds the database driver

DB2: libdb2.(a|so),libdb2osse.(

Typically found in $DB2_HOME/lib32. The files required are


Typically found in $ORACLE_HOME/lib or $ORACLE_HOME

Typically found in /usr/lib, or $MYSQL_HOME/lib

jdbc_driver_dir [path] The directory that contains the jdbc drivers for the database you have chosen
jdbc_drivers The string is used to tell the installer on what jar file(s) to look for. Pick the correct string for your database.

DB2: db2jcc.jar,db2jcc_license_cu.jar|ojdbc14.jar

Typically found in $DB2_HOME/java or $DB2DIR/java

Oracle: ojdbc14.jar

Typically found in $ORACLE_HOME/lib or $ORACLE_HOME


Note: Use the 5.0.x version not the 5.1.x version JDBC driver for MySQL

db2_home [path] The value of the $DB2_HOME or $DB2DIR env variable
oracle_home [path] The value of the $ORACLE_HOME env variable
oracle_tns [path] The value of the $TNS_ADMIN env variable
Third party apps:
file_storage [path] A temporary directory for the install

i.e. /opt/buildforge/temp

apache_modify [y|n]

y=Use the packaged Apache. (default)

n=Point the installer to a currently installed Apache.

Note: "n" is an advanced user choice. Please only use it if you have a good understanding of Apache configuration

apache_https [y|n]

y=Turn on SSL for Apache. This will enable port 443, or the port you specify in apache_port for https. You will connect using https://server:port.

n=This will not turn on SSL for Apache. You will connect using http://server:port. (default)

apache_port Port you want to apache to listen on

The default apache ports are:

non-ssl (http) - 80

ssl (https) - 443

apache_user [valid user account] For *nix, supply a user to run apache as i.e. daemon
apache_group [valid group] For *nix, supply a group to run apache i.e. daemon
php_memory_limit [number] PHP's default memory limit in megabytes i.e. 256
extra_library [path] Only used on Solaris for the path to libgcc
tomcat_modify [y|n]

y=Use the packaged Tomcat (default)

n=Point the installer to an already installed Tomcat

Note: "n" is an advanced option. Please only use "n" if you understand Tomcat configuration and how it interacts with webapps.

tomcat_http_port [port] The port that tomcat uses for http

Default port is 8080

tomcat_ajp_port [port] The port that tomcat uses for ajp

The default port is 8009

tomcat_ssl_port [port] The port that tomcat uses for https

The default port is 8443

tomcat_shutdown_port [port] The port that tomcat uses for shutdown protocol

The default port is 8005

services_unsecure_port [port] The unecrypted port that services will listen

The default port is 3966

services_secure_port [port] The encrypted port that services will listen

The default port is 49150

services_host [BF server FQDN name] Fully Qualified domain that the install will run on i.e.

This option becomes the services_hostname entry in the buildforge.conf file.

In addition it will be used to build the services_url using the format: https://<services_host>:<tomcat_ssl_port>/rbf-services

Advanced Options:
secure [n|y]

n=Installer creates a default SSL certificate for you

y=You will specify either custom entries for a self signed certificate or supply a CA certificate for this system

If tomcat_modify == "n":
external_jar_path [path] Path to a local jdk. For example /usr/java/jdk1.6.0_12
external_deploy_path [path] Specify path to $CATALINA_HOME for your current Tomcat install
services_plugin_path [path] A readable and writable directory that the services application can use on the application server. Typically it is the Tomcat user which needs the read and write permissions to this directory.
services_url [url] Then the http url to access the deployed services layer

The format is:https:// : /rbf-services i.e.:

If secure ="y":
external_signed_cert_yes_no [y|n]

y= User will supply their own certificate. This certificate has to already exist on the system prior to install.

n=Use self signed cert the installer creates with custom answers.

If external_signed_cert_yes_no = "y":
external_ca_cert [path] Path to the CA certificate including the file name.
If external_signed_cert_yes_no = "n":
self_signed_company Company Name (IBM)
self_signed_country Country Name (US)
self_signed_locality Locality Name (Lexington)
self_signed_organization Organization Name (Rational)
self_signed_organization_unit Organization Unit (Build Forge)
self_signed_street_address Address (123 Somewhere Lane)
self_signed_state_province State/Province (Massachusetts)
self_signed_duration Amount of time for the certificate to be valid. This entry should only be a number - such as 365.
self_signed_duration_unit Time unit for above.

You can use days,weeks, months or years.

If secure == "y" AND external_signed_cert_yes_no == "y":
keystore_old_password The password for the imported ssl certificate
keystore_old_password_encrypted [n|y]

y=The given password is encrypted in the response file

n=The given password is in plain text in the response file. Note: A manual install will always use a plain text password.

Windows specific options (for reference only):
db2_modify y=Install packaged DB2 express

n=Do not install packaged DB2 express

windows_create_shortcut y=Creates a desktop shortcut for the user who performed the installation

n=Does not create any desktop shortcuts

If db2_modify== "y"
db2_user_creation y=creates the DB2 user within the operating system using the entry for db_user and db_password.
NOTE: This will not check whether or not the password meets your organization's password length and complexity requirements.
n=Do not create the user specified in db_user. Use this option if the user already exists
db2_install_path [path] Install location for DB2 express
db2_install_data Path for DB2 data. This is typically C:\
Future use reserved options:

NOTE: These options can be safely omitted for the 7.1 install

master_host master_oracle_home
master_port master_db2_home
master_name master_driver_lib
master_username master_oracle_tns
master_password master_type
master_jdbc_driver_dir master_services_host
master_services_unsecure_port location_name
7.1.1 New Entries
db_odbc [name] SQL Server only - provide the name of the ODBC system datasource created to connect to the BF DB
real_hostname [FQDN:port] The combination of the FQDN of the BF host and port Apache is listening on. e.g.
run_as Not used yet. This option can be omitted.
rafw_modify [y|n] States whether or not to install RAFW add-on component. This is a separate purchase from BF. This should be "n" unless you have purchased RAFW.

Sample main.res response file with default values:

install_path = /opt/buildforge
install_repo = /opt/buildforge/Manager/depo
license_host = FLEX
license_port =
db_schema_question = y
db_port = 50000
db_name = BUILD
db_username = build
db_password = Build1Forge
db_password_encrypted = n
db_type = db2
db_schema = BUILD
oracle_home =
db2_home =
driver_lib = /usr/local/db2/V9.1/lib
oracle_tns =
db2_modify = n
db2_user_creation = y
db2_install_path = /opt/ibm/db2/V9.1/bin
db2_install_data = /
jdbc_driver_dir = /opt/ibm/db2/V9.1/java
jdbc_drivers = db2jcc.jar,db2jcc_license_cu.jar
windows_create_shortcut =
postinstall_start = nostart
master_host =
master_port =
master_name =
master_username =
master_password =
master_oracle_home =
master_db2_home =
master_driver_lib =
master_oracle_tns =
master_type =
console_type =
master_jdbc_driver_dir =
master_services_host =
master_services_unsecure_port =
location_name =
apache_modify = y
apache_https = n
apache_https_cert =
apache_port = 80
php_memory_limit = 256
tomcat_modify = y
tomcat_http_port = 8080
tomcat_ajp_port = 8009
tomcat_ssl_port = 8443
tomcat_shutdown_port = 8005
external_jar_path =
external_deploy_path =
services_plugin_path =
services_url =
services_host =
services_unsecure_port = 3966
services_secure_port = 49150
file_storage = /opt/buildforge/temp
apache_user = daemon
apache_group = daemon
extra_library =
secure = n
external_signed_cert_yes_no = n
external_ca_cert =
self_signed_company =
self_signed_country =
self_signed_locality =
self_signed_organization =
self_signed_organization_unit =
self_signed_street_address =
self_signed_state_province =
self_signed_duration =
self_signed_duration_unit =
keystore_password = Build1Forge
keystore_password_encrypted = n
keystore_old_password =
keystore_old_password_encrypted =
real_hostname =
rafw_modify = n
db_odbc =
run_as =

5. Install Build Forge

This is the point where you lay down the binaries using the response file just created. If any of the entries are invalid the install will halt. You will then have the opportunity to correct the information and re-run the installation.

The install is kicked off by running:

cd /opt/buildforge/Manager
./main install main.res

For example:
# cd /opt/buildforge/Manager
#./main install main.res
Install Type: install
Response File: main.res
Locale is en_US.UTF-8
---- Starting Install---
Installing Apache
laying down apache
Performing Platform specific install tasks
laying down the startup scripts
Configuring Start-up Scripts
creating platform manager list
not starting engine
platform done

6. Create the Build Forge 7.1 schema - only follow this if db_schema_question = n

The Build Forge schema is now created outside of normal Build Forge operations. The database will need to be prepared before you start the engine only if you elected not to have the installer apply the schema for you. This is controlled by the db_schema_question option - if you used "n" then you will need to manually apply the schema.

To manually apply the schema run this in the /opt/buildforge/Platform directory:

cd /opt/buildforge/Platform
./bfschema -cV -f "BuildForge/DB/Schema/schema.xml" -i "BuildForge/DB/Schema/initialData.xml" -k -s "table_create.sql" -r

7. Start the engine

At this point you can start the engine up using the /opt/buildforge/rc/buildforge start script.

/opt/buildforge/rc/buildforge start

For example:
# /opt/buildforge/rc/buildforge start
Checking for Build Forge Management Console... not running.
Starting Build Forge Management Console... ENVIRONMENT:
JAVA_HOME = /opt/buildforge/server//ibmjdk
PATH = /opt/buildforge/server//apache//bin:/bin:/sbin:/usr/sbin:/bin:/usr/bin
LD_LIBRARY_PATH = /opt/buildforge/server//apache//lib:/opt/ibm/db2/V9.5/lib32:/opt/buildforge/openssl:/opt/ibm/db2/V9.5/lib32:/opt/ibm/db2/V9.5/lib32:/usr/lib/oracle/xe/app/oracle/product/10.2.0/client/lib
CATALINA_PID = /opt/buildforge/server//tomcat/temp/CATALINA.PID
CATALINA_HOME = /opt/buildforge/server//tomcat
CATALINA_BASE = /opt/buildforge/server//tomcat
CATALINA_TMPDIR = /opt/buildforge/server//tomcat/temp
JRE_HOME = /opt/buildforge/server//ibmjdk
Starting Apache
Starting Tomcat
Using CATALINA_BASE: /opt/buildforge/server//tomcat
Using CATALINA_HOME: /opt/buildforge/server/tomcat
Using CATALINA_TMPDIR: /opt/buildforge/server//tomcat/temp
Using JRE_HOME: /opt/buildforge/server//ibmjdk

8. Install Build Forge into the OS as a service

This piece ensures Build Forge will start automatically in the event of a system restart. The only rc script we need to be concerned with for Build Forge 7.1 is the buildforge script itself if you elected to use the packaged Apache and Tomcat. In this circumstance all three pieces will be started from the buildforge start script - Build Forge engine, Apache and Tomcat.

Your system admin can review the below commands to ensure Build Forge will start on the system in the correct order.

cp /opt/buildforge/rc/buildforge /etc/init.d
ln -s /etc/init.d/buildforge /etc/rc.d/rc0.d/K02buildforge
ln -s /etc/init.d/buildforge /etc/rc.d/rc1.d/K02buildforge
ln -s /etc/init.d/buildforge /etc/rc.d/rc2.d/K02buildforge
ln -s /etc/init.d/buildforge /etc/rc.d/rc3.d/S98buildforge
ln -s /etc/init.d/buildforge /etc/rc.d/rc5.d/S98buildforge
ln -s /etc/init.d/buildforge /etc/rc.d/rc6.d/K02buildforge

cp /opt/buildforge/rc/buildforge /etc/init.d
ln /etc/init.d/buildforge /etc/rc0.d/K02buildforge
ln /etc/init.d/buildforge /etc/rc1.d/K02buildforge
ln /etc/init.d/buildforge /etc/rc2.d/K02buildforge
ln /etc/init.d/buildforge /etc/rc3.d/S98buildforge
ln /etc/init.d/buildforge /etc/rc6.d/K02buildforge

9. RAFW steps

Edit the file to replace RAFW_HOST=rafw with the correct hostname

vi /opt/buildforge/rafw/

# The hostname of the RAFW Framework Server

# RAFW HOME for the different OSes

Copy the RAFW Environment Wizard to the webapps directory.

# cp /opt/buildforge/rafw/rafw.war /opt/buildforge/server/tomcat/webapps

Integrate RAFW with Build Forge

# cd /opt/buildforge/rafw/bin
# chmod +x
# ./ createAll

10. Ensuring the files and directories have the correct permission

There are quite a number of items to consider when security is involved. There are three distinct processes which comprise of a Build Forge install. The engine, user interface and backend services layer all need to have the proper amount of access to certain files for the user they will be running as.

General Needs:

All of the files and folders under /opt/buildforge need to be 755 to allow the Build Forge service user to read and execute files within these directories. You only have to perform this step if root's umask is not 002 or 022.

chmod -R 755 /opt/buildforge


The Apache user is controlled through the response file key=value pairs apache_user and apache_group. The Apache process needs to start as root, and then switches identity to the user and group specified in those directives. The general reason for this is only root can open a port under 1024 which Apache uses.

The Apache user needs read and execute permissions for all of the files under the /opt/buildforge/webroot directory. The Apache user also requires full permissions on the /opt/buildforge/webroot/templates_c directory.

For example:

# ls -la /opt/buildforge/webroot/
total 116
drwxr-xr-x 11 root root 4096 Dec 5 15:11 .
drwxr-xr-x 11 root root 4096 May 14 08:20 ..
drwxr-xr-x 2 root root 4096 Dec 5 15:10 docs
drwxr-xr-x 2 root root 4096 Dec 5 15:10 docs_c
-rwxr-xr-x 1 root root 817 Dec 5 15:10 errorpage.html
drwxr-xr-x 4 root root 4096 Dec 5 15:10 includes
-rwxr-xr-x 1 root root 4391 Dec 5 15:11 init_base.php
-rwxr-xr-x 1 root root 729 Dec 5 15:11 init.php
drwxr-xr-x 13 root root 4096 Dec 5 15:10 lang
drwxr-xr-x 18 root root 4096 Dec 5 15:10 modules
drwxr-xr-x 14 root root 4096 Dec 5 15:11 public
drwxr-xr-x 2 root root 4096 Dec 5 15:10 templates
drwxr-xr-x 2 daemon daemon 4096 Dec 5 15:11 templates_c
drwxr-xr-x 3 root root 4096 Dec 5 15:11 tools

If this is not the case the Build Forge user interface will not function. To correct the permissions run:

chmod -R 755 /opt/buildforge/webroot
chown -R <apache_user> /opt/buildforge/webroot/templates_c

For example:

# chmod -R 755 /opt/buildforge/webroot
# chown -R daemon /opt/buildforge/webroot/templates_c

The Apache user is configurable in the /opt/buildforge/server/apache/conf/httpd.conf file. The two directives which control who Apache runs as are User and Group. If these need to be changed the owner of /opt/buildforge/webroot/templates_c also needs to be updated to reflect the new Apache user.

User daemon
Group daemon



Tomcat does not perform user switching as Apache does. It starts and stays as the user who starts the process. In addition all of the files and folders for Tomcat need to be owned by the user it is running as. The /opt/buildforge/server/start script can be modified to control who Tomcat will start as. This user needs to have complete ownership of all files and directories in the /opt/buildforge/server/tomcat directory. In addition you must manually modify the /opt/buildforge/server/start script to change the user Tomcat will run as.

vi /opt/buildforge/server/start

Find the two Tomcat functions tomcat_start and tomcat_stop:

tomcat_start() {
if [ -d $TOMCAT_PATH ]; then
echo "Starting Tomcat"
$TOMCAT_PATH/bin/ start

tomcat_stop() {
if [ -d $TOMCAT_PATH ]; then
echo "Stopping Tomcat"
$TOMCAT_PATH/bin/ stop -force


Edit them and add /bin/su/<new tomcat user> to the beginning of the start|stop lines. In this example we will use a user called tomcat:

tomcat_start() {
if [ -d $TOMCAT_PATH ]; then
echo "Starting Tomcat"
/bin/su tomcat $TOMCAT_PATH/bin/ start


tomcat_stop() {
if [ -d $TOMCAT_PATH ]; then
echo "Stopping Tomcat"
/bin/su tomcat $TOMCAT_PATH/bin/ stop -force

Now you must also change ownership of all of the Tomcat files and directories to this new user.

# chown -R tomcat /opt/buildforge/server/tomcat

Build Forge Engine:

The Build Forge engine comprises all of the files and processes which control job execution. The user Build Forge runs as is typically root, however this can be changed to another user if desired. The /opt/buildforge/rc/buildforge script controls this behavior.

To change the user the Build Forge engine will run as modify the RUN_AS directive in the /opt/buildforge/rc/buildforge script.

vi /opt/buildforge/rc/buildforge

Locate the entry below:

# If a valid user is specified here, then this script will attempt
# to switch to that user before running the engine. $INSTALLDIR and
# all the files and directories within it should be owned by this
# user.

Modify and enter a user which is valid and you wish to run the Build Forge engine as. You must uncomment this line as well. In this example we will use build:

# If a valid user is specified here, then this script will attempt
# to switch to that user before running the engine. $INSTALLDIR and
# all the files and directories within it should be owned by this
# user.

The final step requires all of the files and folders under /opt/buildforge/Platform change ownership to this user. The .lock and log files in the /opt/buildforge directory will require the new user's ownership as well if they exist. These last two files will only exist if the engine has been started at least once using the /opt/buildforge/rc/buildforge start script.

chown -R build /opt/buildforge/Platform
chown build /opt/buildforge/.lock
chown build /opt/buildforge/log


The RAFW directory and files should be owned by the RAFW user.

chown -R rafw:rafwadms /opt/buildforge/rafw
chmod g+s /opt/buildforge/rafw

Product Alias/Synonym


Document information

More support for: Rational Build Forge

Software version: 7.1

Operating system(s): Linux, Solaris

Reference #: 1385990

Modified date: 03 December 2014