Marcel
Moolenaar
The Linux libraries and Linux development tools in the ports collection are
not suitable to run Oracle. Instead, the appropriate Red hat packages are being
installed. Before you install the Red hat packages, you are advised to
deinstall the linux_lib and linux_devel ports. Make sure nothing is left
behind in the /compat/linux directory.
To install the Red hat packages, you need the Red hat Package Manager. You can
find it in the misc category (/usr/ports/misc/rpm). Make sure you have
initialized the RPM database. Initialize the RPM database as follows:
mkdir -p /compat/linux/var/local/lib/rpm
rpm --initdb --dbpath /compat/linux/var/local/lib/rpm
The following packages are needed for Oracle to run. Note that the version
numbers are important. Minor version differences can result in failure to
install the packages. Worse, the contents of a packages can differ even if it
has the same version number. I've included the md5 checksum for the packages
I've been using, but that's all I can do :-(br>
Install the packages in the order shown (or any order that respects
dependencies [which is not guaranteed to be non-cyclic]):
package md5 checksum
-------------------------------- --------------------------------
setup-1.9.1-2.noarch.rpm 6d79ec35042e9b4b43a2f640c8c8d1e5
filesystem-1.3.1-3.noarch.rpm 9ae78dcceb23f80c41fba5ed96f0aa4e
ld.so-1.9.5-7.i386.rpm 240b50efe2606407283979087938d03a
ldconfig-1.9.5-3.i386.rpm 4ec6e36ad260702db7fcce6fb7d32e18
glib-1.0.1-3.i386.rpm 0211ac35d93ebc7b1b1f52400f81a587
glibc-2.0.7-17.i386.rpm de94c58d261f588ddcb3b1f709588c6d
termcap-9.12.6-11.noarch.rpm 040274564e5b0c609c4c9ae6d768383d
libtermcap-2.0.8-9.i386.rpm be9c0449b84c22102f65e1237e2d4e79
grep-2.2-2.i386.rpm 6369a42a9cacdb273b143688db076c7b
fileutils-3.16-9.i386.rpm cdb521c066dfcb54d784dc68f997da4c
bash-2.02-1.i386.rpm fe7f8a1254554083fe5090f856ecb977
libc-5.3.12-27.i386.rpm 152dc8e473d06b078cd195d33c0859b3
zlib-1.1.2-2.i386.rpm f5a2ad4ecbbb7780ec89ce07ae2997f7
ncurses-4.2-6.i386.rpm bb9366bf387a1732325bba58000e0b63
info-3.12-6.i386.rpm 4e7fe70af59c8a4f35e3f01dec9eb576
make-3.76.1-3.i386.rpm 4b001425cd44489bda51fe1c6f384982
binutils-2.9.1.0.7-1.i386.rpm e2d11591fd3de8110215d6685ba9c9ac
gcc-2.7.2.3-11.i386.rpm 8f17ca42c17192b757b9586770180cbb
kernel-headers-2.0.34-3.i386.rpm 11910a1b787f669eb4092082a122566e
glibc-devel-2.0.7-17.i386.rpm ef341e3c8a68c36691bf249b386256fb
tcl-8.0.2-17.i386.rpm 45b1391af27d06f6ed3128c87d33558a
The general command for installing packages is:
rpm -i --ignoreos --root /compat/linux
Some packages may generate errors when you install them. We only suggest to
brandelf ldconfig directly after installing the ldconfig package. Use the
following command to do that:
brandelf -t Linux /compat/linux/sbin/ldconfig
Note that you only need the tcl package when you want to use the intelligent
agent. After you have installed the above mentioned packages, you need to
brandelf everything, to make sure the emulator knows they are Linux binaries:
brandelf -t Linux /compat/linux/bin/*
brandelf -t Linux /compat/linux/sbin/*
brandelf -t Linux /compat/linux/usr/bin/*
brandelf -t Linux /compat/linux/usr/sbin/*
Furthermore, make some links:
ln -s /compat/linux/usr/src/linux-2.0.34 /compat/linux/usr/src/linux
rmdir /compat/linux/tmp; ln -s /tmp /compat/linux/tmp
rmdir /compat/linux/var/tmp; ln -s /var/tmp /compat/linux/var/tmp
And, last but not least, remove conflicting files:
rm /compat/linux/etc/exports rm /compat/linux/etc/group rm /compat/linux/etc/passwd rm /compat/linux/etc/hosts.allow rm /compat/linux/etc/hosts.deny rm /compat/linux/etc/motd rm /compat/linux/etc/printcap rm /compat/linux/etc/protocols rm /compat/linux/etc/services rm /compat/linux/bin/df
Before you can install Oracle, you need to set up a proper environment. This document only describes what to do *specially* to run Oracle for Linux on FreeBSD, not what has been described in the Oracle installation guide.
As described in the Oracle installation guide, you need to set the maximum size of shared memory. Don't use SHMMAX under FreeBSD. SHMMAX is merely calculated out of SHMMAXPGS and PGSIZE. Therefor define SHMMAXPGS. All other options can be used as described in the guide. For example:
options SHMMAXPGS=10000 options SHMMNI=100 options SHMSEG=10 options SEMMNS=200 options SEMMNI=70 options SEMMSL=61Set these options to suit your intended use of Oracle.
Create an Oracle account just as you would create any other account. The Oracle account is special only that you need to give it a Linux shell. Add /compat/linux/bin/bash to /etc/shells and set the shell for the Oracle account to /compat/linux/bin/bash.
Besides the normal Oracle variables, such as ORACLE_HOME and ORACLE_SID you must set the following environment variables:
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib
CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin: \
compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin: \
/usr/local/bin:$ORACLE_HOME/bin
It is advised to set all the environment variables in .profile. A complete
example is:
ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib;
export LD_LIBRARY_PATH
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=386x; export ORACLE_TERM
CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip; export CLASSPATH
PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin:\
/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin:\
/usr/local/bin:$ORACLE_HOME/bin;
export PATH
When you have met all requirements as described in the installation guide and followed the instructions in this document, you should be able to install Oracle without any problems. After you have installed Oracle, apply the patches described in the next two subsections.
When installing Oracle, some actions, which need to be performed as root, are recorded in a shell script called root.sh. root.sh is written in the orainst directory. Apply the following patch to root.sh, to have it use to proper location of chown:
*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
--- orainst/root.sh Mon Dec 28 15:58:53 1998
***************
*** 31,37 ****
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/bin/chown
#
# Define variables to be used in this script
--- 31,37 ----
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/usr/sbin/chown
#
# Define variables to be used in this script
When you don't install Oracle from CD, you can path the source for root.sh. It
is called rthd.sh and is located in the orainst directory in the source tree.
The script genclntsh is used to create a single shared client library. It is used when building the demos. Apply the following patch to comment out the definition of PATH:
*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
--- bin/genclntsh Tue Dec 22 15:36:49 1998
***************
*** 32,38 ****
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst
--- 32,38 ----
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst
When you have followed the instructions, you should be able to run Oracle as if it was run on Linux itself. Wether that is good or bad, depends on how you value Linux :-) Until we have a native FreeBSD version of Oracle supported by Oracle, I think Oracle for Linux is a good alternative.