Capítulo 10. Compatibilidad binaria con Linux

10.1. Sinopsis

FreeBSD proporciona compatibilidad de binarios con muchos otros sistemas operativos tipo UNIX®, incluyendo Linux. Puede estarse preguntando ?por qué necesita FreeBSD ejecutar binarios de Linux? La respuesta a esa pregunta es muy simple. Muchos desarrolladores y compañías desarrollan sólo para Linux, ya que últimamente es el blanco de todas las miradas dentro del mundo de las tecnologís de la información. Esto hace que la comunidad FreeBSD tenga que exigir a esas compañías y desarrolladores que produzcan versiones nativas de sus aplicaciones para FreeBSD. El problema es que la mayoría de esas compañías no suelen saber realmente cuánta gente utilizaría su producto si existieran esas versiones para FreeBSD, y la mayoría continúa desarrollando únicamente para Linux. Vista la situación ?que puede hacer un usuario de FreeBSD? Aquí es donde entra en juego la compatibilidad binaria con Linux.

Para expresarlo en pocas palabras, dicha compabitilidad permite a los usuarios de FreeBSD cerca del 90% de las aplicaciones de Linux sin tener que modificarlas en absoluto. Entre estas está StarOffice™, la versión Linux de getenv(3), Adobe® Acrobat®, RealPlayer, VMware, Oracle®, WordPerfect, Doom, Quake y muchas más. En determinados casos los binarios Linux rinden mejor en FreeBSD que en Linux.

Existen, por desgracia, ciertas características específicas de Linux que no funcionan en FreeBSD. Los binarios Linux no funcionarán en FreeBSD si recurren a llamadas específicas de i386™ como la activación del modo virtual 8086.

Tras leer este capítulo sabrá usted:

  • cómo activar la compatibilidad binaria con Linux en su sistema.

  • cómo instalar bibliotecas compartidas de Linux que pueda necesitar.

  • cómo instalar aplicaciones de Linux en su sistema FreeBSD.

  • cuáles son los detalles de la implementación de compatibilidad binaria con Linux en FreeBSD.

Antes de leer este capítulo es necesario que sepa:

10.2. Instalación

La compatibilidad binaria con Linux no viene activada por omisión. La forma más sencilla de habilitarla es cargar el KLD ("objeto cargable en el kernel") linux. Como usuario root proceda del siguiente modo:

# kldload linux

Si quiere que la compatibilidad con Linux esté siempre activada tendrá que añadir la siguiente línea en /etc/rc.conf:

linux_enable="YES"

Utilice kldstat(8) para verificar que el KLD esté cargado:

% kldstat
Id Refs Address    Size     Name
 1    2 0xc0100000 16bdb8   kernel
 7    1 0xc24db000 d000     linux.ko

Si por alguna razón no desea o no puede cargar el KLD, entonces puede enlazar estáticamente la compatibilidad de binarios Linux en el kernel agregando options COMPAT_LINUX a su fichero de configuración del kernel. Luego instale su nuevo kernel como se describe en Configuración del kernel de FreeBSD.

10.2.1. Instalación de bibliotecas de ejecución Linux

Puede hacerse de dos maneras, ya sea usando el port linux_base, o instalándolas de forma manual.

10.2.1.1. Instalación usando el port linux_base

Este es con mucho el método mas sencillo para instalar bibliotecas de ejecución. Es como instalar cualquier otro port de la Colección de Ports. Es tan sencillo como esto:

# cd /usr/ports/emulators/linux_base
# make install distclean

Hecho esto debería disponer de compatibilidad binaria con Linux. Algunos programas pueden "quejarse" por la presencia de versiones antiguas de algunas bibliotecas del sistema. Generalmente esto no suele ser un problema muy grave.

Pueden coexistir múltiples versiones del port emulators/linux_base disponibles correspondientes a distintas versiones de diversas distribuciones de Linux. Tendrá que instalar el port que más se ajuste a las necesidades de las aplicaciones de Linux que quiera instalar.

10.2.1.2. Instalación manual de bibliotecas

Si, por el motivo que fuese, no tiene instalada la colección de ports puede instalar las bibliotecas que necesite de forma manual. Necesitará las bibliotecas compartidas Linux de las que depende el programa y el enlazador en tiempo de ejecución ("runtime linker"). Necesitará también crear un directorio /compat/linux donde alojar las bibliotecas Linux en su sistema FreeBSD Cualquier biblioteca compartida a la que haya recurrido un programa de Linux ejecutado en FreeBSD buscará en primer lugar en dicho directorio. Por lo tanto, si se carga un programa Linux, por ejemplo /lib/libc.so, FreeBSD intentará en primer lugar abrir /compat/linux/lib/libc.so y, si no existe, lo intentará con /lib/libc.so. Las bibliotecas compartidas deben instalarse en /compat/linux/lib en lugar de las rutas que el ld.so de Linux proporcione.

En general, necesitará buscar las bibliotecas compartidas de las que los binarios Linux dependen sólamente las primeras veces que instale un programa Linux en su FreeBSD. Más adelante tendrá un conjunto suficiente de bibliotecas compartidas Linux en su sistema para poder ejecutar binarios Linux sin que tenga que hacer nada más.

10.2.1.3. Cómo instalar bibliotecas compartidas adicionales

?Que pasaría si instalara el port linux_base y su aplicación todavía tuviera problemas debido a bibliotecas compartidas que no encuentra en el sistema? ?Cómo saber qué bibliotecas compartidas necesitan los binarios Linux? Básicamente hay dos posibilidades (para poder ejecutar las siguientes instrucciones necesitará estar como root

Si tiene acceso a un sistema Linux busque en él qué bibliotecas necesita la aplicación, y cópielas a su sistema FreeBSD. Veamos unos ejemplos:

Asumiremos que utilizó FTP para conseguir los binarios Linux de Doom y los puso en un sistema Linux. Para ver qué bibliotecas compartidas necesitará ejecute ldd linuxdoom:

% ldd linuxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29

Necesitaría todos los ficheros de la segunda columna, y tendrá que ponerlos en /compat/linux con los nombres de la primera columna como enlaces simbólicos apuntando hacia ellos. De este modo tendría en su sistema FreeBSD los siguientes ficheros:

/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29

Recuerde que si ya tiene una biblioteca compartida Linux con un número de versión mayor que coincida con la primera columna de la salida de ldd no necesitará copiar el fichero que aparece en la última columna; el que tiene debería funcionar, aunque se aconseja copiar la biblioteca compartida de todas maneras si es una nueva versión. Puede eliminar la vieja siempre que haga que el enlace simbólico apunte a la nueva. Si tiene estas bibliotecas en su sistema:

/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27

y un binario requiere una versión más reciente (como indica la siguiente salida de ldd):

libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29

si solo ve una o dos versiones desfasadas en los últimos dígitos no se preocupe de copiar /lib/libc.so.4.6.29, el programa debería funcionar bien con una versión ligeramente antigua. De todas formas, si así lo prefiere, puede actualizar libc.so; el resultado sería este:

/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29

El mecanismo de enlazado simbólico sólamente es necesario con binarios Linux. El enlazador en tiempo de ejecución de FreeBSD se encarga de buscar él mismo las versiones correctas, así que no tendrá que preocuparse usted de hacerlo.

10.2.2. Instalar binarios ELF Linux

Los binarios ELF algunas veces requieren un paso extra de "marcado". Si trata de ejecutar un binario ELF no marcado recibirá un mensaje de error como el siguiente:

% ./mi-binario-elf
ELF binary type not known
Abort

Para ayudar al kernel de FreeBSD a distinguir entre un binario ELF de FreeBSD y uno de Linux utilice brandelf(1).

% brandelf -t Linux mi-binario-elf-de-linux

Las herramientas GNU se encargan de ubicar automáticamente la marca apropiada en los binarios ELF, por lo tanto este paso será innecesario en un futuro próximo.

10.2.3. Configuración de la resolución de nombres de equipos

Si el DNS no funciona u obtiene este mensaje:

resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keyword

Necesitará un fichero /compat/linux/etc/host.conf con el siguiente contenido:

order hosts, bind
multi on

Significa que /etc/hosts seráanalizado en primer lugar y después se usará DNS. Si /compat/linux/etc/host.conf no está instalado, las aplicaciones Linux usan el /etc/host.conf de FreeBSD y chocan con la sintaxis (incompatible) de FreeBSD. Borre bind de su /etc/resolv.conf si no tiene configurado un servidor de nombres.

10.3. Instalación de Mathematica®

Este documento describe el proceso de instalación de la versión para Linux de Mathematica® 5.X en un sistema FreeBSD.

Puede pedir a Wolfram, el fabricante, La versión para para Linux de Mathematica® o la versión de Mathematica® para estudiantes en su sitio web, http://www.wolfram.com/.

10.3.1. El instalador de Mathematica®

Lo primero que tiene que hacer es decirle a FreeBSD que los binarios de Mathematica® para Linux utilizan la ABI Linux. La forma más sencilla de hacerlo es marcar por omisión todos los binarios sin marcas como Linux ELF.

# sysctl kern.fallback_elf_brand=3

Hecho esto FreeBSD asumirá que cualquier binario sin marca que encuentre utiliza la ABI Linux; de este modo podrá ejecutar el binario directamente desde el CDROM.

Copie el fichero MathInstaller en su disco duro

# mount /cdrom
# cp /cdrom/Unix/Installers/Linux/MathInstaller /directoriolocal/

Edite este fichero y sustituya la primera línea, /bin/sh, por /compat/linux/bin/sh para asegurarnos de que lo que ejecute el instalador sea la verión de sh(1) de Linux. El siguiente paso es sustituir todos los Linux) por FreeBSD) con un editor de texto on con el script que encontrará en la siguiente sección. Esto se hace para ayudar al instalador de Mathematica®, el cual en un cierto momento invoca a uname -s para determinar el sistema operativo, a tratar a FreeBSD como si fuera un sistema operativo muy similar a Linux. Hecho todo esto, cuando ejecute MathInstaller podrá instalar Mathematica®.

10.3.2. Modificación de los ejecutables de Mathematica®

Debe modificar los scripts de shell que Mathematica® creó durante la instalación antes de usarlos. Si eligió ubicar en /usr/local/bin los ejecutables de Mathematica® verá que en ese directorio hay enlaces simbólicos a ficheros como math, mathematica, Mathematica y MathKernel. En cada uno de esos ficheros debe sustituir Linux) por FreeBSD) con un editor de texto o bien con el siguiente script de shell:

#!/bin/sh
cd /usr/local/bin
for i in math mathematica Mathematica MathKernel
  do sed 's/Linux)/FreeBSD)/g' $i > $i.tmp
  sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i
  rm $i.tmp
  chmod a+x $i
done

10.3.3. Cómo obtener una contraseña de Mathematica®

Cuando arranque Mathematica® por primera vez se le pedirá una contraseña. Si Wolfram no le ha enviado ya necesita un "machine ID", para lo cual debe ir al directorio de instalación y ejecutar mathinfo. Este "machine IDE" se obtiene de la dirección MAC de la primera tarjeta Ethernet de la máquina y tiene como objetivo que no pueda ejecutar Mathematica® en más de una máquina.

Durante el proceso de registro en Wolfram (ya sea por correo electrónico, teléfono o fax) les dará el "machine ID" y Wolfram le enviará una contraseña relacionada con él, consistente en grupos de números.

10.3.4. Ejecución del «frontend» de Mathematica® través de una red

Mathematica® usa unos cuantos tipos especiales para mostrar caracteres que no están en ningún conjunto estándar de tipos: integrales, sumas, letras griegas, etc. El protocolo X exige que los tipos estén instalados en local, es decir, tiene que copiar los tipos del CDROM o la máquina desde la que ha instalado Mathematica® a su máquina. Los tipos están en el directorio del CDDROM /cdrom/Unix/Files/SystemFiles/Fonts y se supone que deben estar en su disco duro en el directorio /usr/local/mathematica/SystemFiles/Fonts. Los tipos están realmente en los subdirectorios Type1 y X. Hay varias formas de utilizarlos.

La primera es copiarlos en uno de los directorios de tipos que hay en /usr/X11R6/lib/X11/fonts, antes de lo cual tendrá que añadir a fonts.dir los nombres de los tipos; tendrá también que cambiar el número de tipos en la primera línea. Por otra parte, todo esto puede hacerse ejecutando mkfontdir(1) en el directorio donde haya copiado los tipos.

La segunda forma de utilizar estos tipos es copiarlos bajo /usr/X11R6/lib/X11/fonts:

# cd /usr/X11R6/lib/X11/fonts
# mkdir X
# mkdir MathType1
# cd /cdrom/Unix/Files/SystemFiles/Fonts
# cp X/* /usr/X11R6/lib/X11/fonts/X
# cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
# cd /usr/X11R6/lib/X11/fonts/X
# mkfontdir
# cd ../MathType1
# mkfontdir

Añada los nuevos directorios de tipos a su ruta de tipos:

# xset fp+ /usr/X11R6/lib/X11/fonts/X
# xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
# xset fp rehash

Si usa el servidor Xorg puede cargar los tipos automáticamente añadiéndolos al fichero xorg.conf.

En servidores XFree86™ el fichero de configuración es XF86Config.

Si no tiene ya en su sistema un directorio /usr/X11R6/lib/X11/fonts/Type1 puede cambiarle el nombre al directorio MathType1 del ejemplo anterior por Type1.

10.4. Instalación de Maple™

Maple™ es un programa comercial de matemáticas similar a Mathematica®. Puede adquirir este software en http://www.maplesoft.com/; tras registrarlo recibirá un fichero de licencia. Si quiere instalar este software en FreeBSD siga los siguienes pasos:

  1. Ejecute el "script" de shell INSTALL desde el lugar de instalación del producto. Elija la opción "RedHat" cuando le pregunte el programa de instalación. /usr/local/maple es un buen sitio para instalar el software.

  2. Si no lo ha hecho ya, solicite una licencia para Maple™ a Maple Waterloo Software (http://register.maplesoft.com/) y cópiela a /usr/local/maple/license/license.dat.

  3. Instale el gestor de licencias FLEXlm ejecutando el "script" de shell de instalación INSTALL_LIC que viene con Maple™. Introduzca el nombre de su máquina (el servidor de licencias lo necesita).

  4. Parchée el fichero /usr/local/maple/bin/maple.system.type con lo siguiente:

       ----- snip ------------------
    *** maple.system.type.orig      Sun Jul  8 16:35:33 2001
    --- maple.system.type   Sun Jul  8 16:35:51 2001
    ***************
    *** 72,77 ****
    --- 72,78 ----
              # the IBM RS/6000 AIX case
              MAPLE_BIN="bin.IBM_RISC_UNIX"
              ;;
    +     "FreeBSD"|\
          "Linux")
              # the Linux/x86 case
            # We have two Linux implementations, one for Red Hat and
       ----- snip end of patch -----

    Tenga muy presente que después de "FreeBSD"|\ no debe haber ningún espacio en blanco.

    Este parche le dice a Maple™ que interprete "FreeBSD" como un tipo de sistema Linux. El "script" de shell bin/maple llama al "script" de shell bin/maple.system.type, que a su vez recurre a uname -a para dictaminar el nombre del sistema operativo. Dependiendo de cuál sea sabrá qué binarios utilizar.

  5. Inicio del servidor de licencias.

    El siguiente "script", sito en /usr/local/etc/rc.d/lmgrd.sh, le permitirá arrancar lmgrd:

       ----- snip ------------
    
    #! /bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
    PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
    export PATH
    
    LICENSE_FILE=/usr/local/maple/license/license.dat
    LOG=/var/log/lmgrd.log
    
    case "$1" in
    start)
    	lmgrd -c ${LICENSE_FILE} 2<< ${LOG} 1<&2
    	echo -n " lmgrd"
    	;;
    stop)
    	lmgrd -c ${LICENSE_FILE} -x lmdown 2<< ${LOG} 1<&2
    	;;
    *)
    	echo "Usage: `basename $0` {start|stop}" 1<&2
    	exit 64
    	;;
    esac
    
    exit 0
       ----- snip ------------
  6. Prueba de arranque de Maple™:

    % cd /usr/local/maple/bin
    % ./xmaple

    Todo debería funcionar perfectamente. Si es así aún le queda un último paso: escribir a Maplesoft y decirles que sería genial una versión nativa para FreeBSD.

10.4.1. Problemas frecuentes

  • El gestor de licencias FLEXlm puede ser un tanto difícil de usar. En caso de necesitarla tiene más información en http://www.globetrotter.com/.

  • lmgrd tiene una reconocida fama de ser muy meticuloso en todo lo relacionado con el fichero de licencia; suele generar volcados de memoria si se encuentra con algún problema. Un fichero de licencia correcto tiene que parecerse mucho a este:

    # =======================================================
    # License File for UNIX Installations ("Pointer File")
    # =======================================================
    SERVER chillig ANY
    #USE_SERVER
    VENDOR maplelmg
    
    FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
             PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
             ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
             SN=XXXXXXXXX

    El número de serie y la clave han sido sobreescritos con X. chillig es el nombre de un equipo.

    Puede editar el fichero de licencia siempre que no toque la línea "FEATURE" (que está protegida por la clave de la licencia).

10.5. Instalación de MATLAB®

Este documento describe el proceso de instalación de la versión para Linux de MATLAB® version 6.5 en FreeBSD. En general funciona bastante bien, excepción hecha de Java Virtual Machine™ (consulte la Enlace del entorno de ejecución Java™).

La versión Linux de MATLAB® puede pedirse directamente en el sitio de The MathWorks, http://www.mathworks.com. Tiene que recibir también el fichero de licencia o instrucciones de cómo crearlo. Al hacer su pedido aproveche para decirles que sería muy buena idea que ofrecieran una versión nativa de su software para FreeBSD.

10.5.1. Instalación de MATLAB®

Para instalar MATLAB® haga lo siguiente:

  1. Inserte el CD de instalación y móntelo. Conviértase en root e inicie la instalación:

    # /compat/linux/bin/sh /cdrom/install

    El instalador es gráfico. Si obtiene errores acerca de no ser capaz de abrir un display teclée setenv HOME ~USUARIO, donde USUARIO es el nombre del usuario con el que hizo su(1).

  2. Teclée /compat/linux/usr/local/matlab donde el instalador le pida el directorio raíz de MATLAB®.

    Esto último le facilitará la entrada de datos durante el resto de la instalación. Introduzca lo siguiente en el "prompt" de su shell: set MATLAB=/compat/linux/usr/local/matlab

  3. Edite el fichero de licencia tal y como consta en las instrucciones de la licencia de MATLAB®.

    Puede tenerlo ya editado y copiado a $MATLAB/license.dat desde antes de que el instalador se lo pida.

  4. Complete el proceso de instalación.

La instalación MATLAB® ha finalizado. Los siguientes pasos aplicarán el "pegamento" necesario para conectarlo a su sistema FreeBSD.

10.5.2. Inicio del administrador de licencias

  1. Crée los enlaces simbólicos que necesitan los "scripts" del administrador de licencias:

    # ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
    # ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW
  2. Crée un fichero de inicio en /usr/local/etc/rc.d/flexlm.sh. El siguiente ejemplo es una versión modificada de $MATLAB/etc/rc.lm.glnx86 que viene con la distribución de MATLAB®. Los cambios que se han hecho en él obedecen a la ubicación de los ficheros y el arranque del administrador de licencias bajo emulación de Linux.

    #!/bin/sh
    case "$1" in
      start)
            if [ -f /usr/local/etc/lmboot_TMW ]; then
                  /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u nombre-de-usuario && echo 'MATLAB_lmgrd'
            fi
            ;;
      stop)
    	if [ -f /usr/local/etc/lmdown_TMW ]; then
                /compat/linux/bin/sh /usr/local/etc/lmdown_TMW  > /dev/null 2>&1
    	fi
            ;;
      *)
    	echo "Usage: $0 {start|stop}"
    	exit 1
    	;;
    esac
    
    exit 0

    El fichero debe ser ejecutable:

    # chmod +x /usr/local/etc/rc.d/flexlm.sh

    Tendrá que reemplazar la entrada nombre-de-usuario de nuestro ejemplo por un nombre de usuario válido en su sistema (que no sea root).

  3. Arranque el administrador de licencias:

    # /usr/local/etc/rc.d/flexlm.sh start

10.5.3. Enlace del entorno de ejecución Java™

Cambie el enlace del entorno de ejecución Java™ (JRE) a uno que funcione en FreeBSD:

# cd $MATLAB/sys/java/jre/glnx86/
# unlink jre; ln -s ./jre1.1.8 ./jre

10.5.4. Creación de un "script" de arranque para MATLAB®

  1. Coloque el siguiente "script" de arranque en /usr/local/bin/matlab:

    #!/bin/sh
    /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"
  2. Escriba chmod +x /usr/local/bin/matlab.

Dependiendo de su versión de emulators/linux_base tal vez obtenga errores al ejecutar este "script". Para evitarlo edite /compat/linux/usr/local/matlab/bin/matlab y cambie la línea en la que aparece:

if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then

(en la versión 13.0.1 es en la línea 410) por esta otra línea:

if test -L $newbase; then

10.5.5. Creación de un "script" para detener MATLAB®

Este "script" solucionará las dificultades que pueda tener para detener MATLAB® correctamente.

  1. Crée un fichero llamado $MATLAB/toolbox/local/finish.m y ponga en él una sola línea con este texto:

    ! $MATLAB/bin/finish.sh

    $MATLAB debe escribirse tal cual.

    En el mismo directorio encontrará los ficheros finishsav.m y finishdlg.m, que le permiten guardar su trabajo antes de salir de la aplicación. Si quiere usar alguno de ellos, inserte la línea de arriba inmediatamente después de save.

  2. Crée un fichero $MATLAB/bin/finish.sh con el siguiente contenido:

    #!/usr/compat/linux/bin/sh
    (sleep 5; killall -1 matlab_helper) &
    exit 0
  3. El fichero tiene que ser ejecutable:

    # chmod +x $MATLAB/bin/finish.sh

10.5.6. Uso de MATLAB®

Desde este momento ya puede usted teclear matlab y empezar a usarlo.

10.6. Instalación de Oracle®

10.6.1. Prefacio

Este texto describe el proceso de instalación de Oracle® 8.0.5 y Oracle® 8.0.5.1 Enterprise Edition para Linux en una máquina FreeBSD.

10.6.2. Instalación del entorno Linux

Debe tener instalados los ports emulators/linux_base y devel/linux_devtools. Si tiene dificultades con estos ports es posible que tenga que usar los paquetes o quizás versiones más antiguas de dichas aplicaciones que encontrará en la Colección de Ports.

Si quiere usar el agente inteligente también tendrá que instalar el paquete Tcl de Red Hat, tcl-8.0.3-20.i386.rpm. La orden genérica para instalar paquetes con el port oficial de RPM (archivers/rpm) es:

# rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm paquete

La instalación de dicho paquete no debe generar ningún error.

10.6.3. Creación del entorno Oracle®

Antes de instalar Oracle® tendrá que configurar un entorno apropiado. Este documento solamente explica lo que hay que hacer especialmente para utilizar la versión de Linux para Oracle® FreeBSD, no lo que figura en la guía de instalación de Oracle®.

10.6.3.1. Personalización del kernel

Tal y como consta en la guía de instalación de Oracle®, debe configurar la cantidad máxima de memoria compartida. No utilice SHMMAX en FreeBSD. SHMMAX se calcula a partir de SHMMAXPGS y PGSIZE, así que defina SHMMAXPGS. Todas las demás opciones pueden usarse tal y como se describen en la guía. Por ejemplo:

options SHMMAXPGS=10000
options SHMMNI=100
options SHMSEG=10
options SEMMNS=200
options SEMMNI=70
options SEMMSL=61

Configure estas opciones para que se ajusten al uso que pretenda darle a Oracle®.

Asegúrese también de que las siguientes opciones están en el fichero de configuración de su kernel:

options SYSVSHM #SysV shared memory
options SYSVSEM #SysV semaphores
options SYSVMSG #SysV interprocess communication

10.6.3.2. Cuenta Oracle®

Crée una cuenta oracle según el procedimiento habitual de creación de usuarios. La cuenta oracle, empero, tiene algo especial puesto que debe teer una shell de Linux. Añada /compat/linux/bin/bash a /etc/shells y asigne a la cuenta oracle/compat/linux/bin/bash como shell por omisión.

10.6.3.3. Entorno

Además de las variables normales para Oracle®, como ORACLE_HOME y ORACLE_SID, debe configurar las siguientes variables de entorno:

VariableValor

LD_LIBRARY_PATH

$ORACLE_HOME/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

Le aconsejamos configurar todas las variables de entorno en .profile. Veamos un ejemplo completo:

ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/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
PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
export PATH

10.6.4. Instalación de Oracle®

Debido a una pequeña inconsistencia en el emulador Linux tendrá que crear un directorio llamado .oracle en /var/tmp antes de iniciar el instalador. Haga que sea propiedad del usuario oracle. Hecho esto deberí poder instalar Oracle® sin ningún problema. Si no es así revise su distribución Oracle® y su configuración. Una vez finalizada la instalación de Oracle® aplique los parches que se detallan en las dos siguientes subsecciones.

Un problema que se da con una cierta frecuencia es que el adaptador del protocolo TCP no está correctamente instalado. Como consecuencia no puede iniciarse ninguna escucha TCP, a las que también se les llama directamente «listeners». Esto le ayudará a resolver el problema.:

# cd $ORACLE_HOME/network/lib
# make -f ins_network.mk ntcontab.o
# cd $ORACLE_HOME/lib
# ar r libnetwork.a ntcontab.o
# cd $ORACLE_HOME/network/lib
# make -f ins_network.mk install

No se olvide de ejecutar root.sh de nuevo.

10.6.4.1. Cómo parchear root.sh

Durante la instalación de Oracle® algunas acciones que requieren ser ejecutadas como root deben almacenarse en un "script" de shell llamado root.sh. Dicho "script" está en el directorio orainst. Aplique el siguiente parche a root.sh para que utilice la ruta correcta de chown o ejecute el "script" bajo una shell nativa de Linux.

*** 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

Si no está instalando Oracle® desde un CD puede parchear las fuentes de root.sh. Se llama rthd.sh y está en el directorio orainst del árbol de fuentes.

10.6.4.2. Cómo parchear genclntsh

El "script" genclntsh se usa para crear una biblioteca de cliente compartida y para construir los demos. Al aplicar el siguiente parche comentará la definición de 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

10.6.5. Ejecución de Oracle®

Una vez seguidas estas instrucciones podrá ejecutar Oracle® como si la hubiera instalado en Linux.

10.7. Instalación de SAP® R/3®

Las instalaciones de sistemas SAP® en FreeBSD no reciben soporte técnico de SAP®. SAP® solamente lo ofrece si se usan plataformas certificadas.

10.7.1. Introducción

Este texto expone una forma de instalar un SAP® R/3® System con una Oracle® Database para Linux en una máquina FreeBSD, incluyendo la instalación de FreeBSD y Oracle®. Se muestran dos configuraciones diferentes:

  • SAP® R/3® 4.6B (IDES) con Oracle® 8.0.5 en FreeBSD 4.3-STABLE

  • SAP® R/3® 4.6C con Oracle® 8.1.7 en FreeBSD 4.5-STABLE

Aunque este documento trate de describir todos los pasos importantes con detalle no ha sido escrito como sustituto de las guías de instalación de Oracle® y SAP® R/3®.

Por favor, consulte la documentación de SAP® R/3® que se incluye en la edición para Linux de SAP® y las preguntas específicas sobre Oracle®, así como los recursos que estén a su disposición sobre Oracle® y SAP® OSS.

10.7.2. Software

Durante la instalación de SAP® se han utilizado los siguientes CD-ROM:

10.7.2.1. SAP® R/3® 4.6B, Oracle® 8.0.5

NombreNúmeroDescripción

KERNEL

51009113

SAP Kernel Oracle / Installation / AIX, Linux, Solaris

RDBMS

51007558

Oracle / RDBMS 8.0.5.X / Linux

EXPORT1

51010208

IDES / DB-Export / Disco 1 de 6

EXPORT2

51010209

IDES / DB-Export / Disco 2 de 6

EXPORT3

51010210

IDES / DB-Export / Disco 3 de 6

EXPORT4

51010211

IDES / DB-Export / Disco 4 de 6

EXPORT5

51010212

IDES / DB-Export / Disco 5 de 6

EXPORT6

51010213

IDES / DB-Export / Disco 6 de 6

También utilizamos el CD de Oracle® 8 Server (versión pre-producción 8.0.5 para Linux, versión de kernel 2.0.33), que no es realmente necesario y FreeBSD 4.3-STABLE (a unos cuantos días de la liberación de 4.3-RELEASE).

10.7.2.2. SAP® R/3® 4.6C SR2, Oracle® 8.1.7

NombreNúmeroDescripción

KERNEL

51014004

SAP Kernel Oracle / SAP Kernel Version 4.6D / DEC, Linux

RDBMS

51012930

Oracle 8.1.7/ RDBMS / Linux

EXPORT1

51013953

Release 4.6C SR2 / Export / Disco 1 de 4

EXPORT1

51013953

Release 4.6C SR2 / Export / Disco 2 de 4

EXPORT1

51013953

Release 4.6C SR2 / Export / Disco 3 de 4

EXPORT1

51013953

Release 4.6C SR2 / Export / Disco 4 de 4

LANG1

51013954

Release 4.6C SR2 / Language / DE, EN, FR / Disco 1 de 3

Según los idiomas que quiera usar es posible que necesite otros CD de idiomas. Sólo hemos utilizado DE y EN, así que nos bastó con el primer CD. Para su información, los números de los cuatro CD EXPORT son idénticos. Los tres CD de idiomas también tienen el mismo número, aunque esto es distinto en los CD de la versión 4.6B IDES. Al escribir este texto (20.03.2002) ejecutamos la instalación en FreeBSD 4.5-STABLE (20.03.2002).

10.7.3. Notas SAP®

Las siguientes notas han resultado ser muy útiles durante la instalación, así que le recomendamos encarecidamente que las lea antes de instalar SAP® R/3®:

10.7.3.1. SAP® R/3® 4.6B, Oracle® 8.0.5

NúmeroTítulo

0171356

SAP Software on Linux: Essential Comments

0201147

INST: 4.6C R/3 Inst. on UNIX - Oracle

0373203

Update / Migration Oracle 8.0.5 -→ 8.0.6/8.1.6 LINUX

0072984

Release of Digital UNIX 4.0B for Oracle

0130581

R3SETUP step DIPGNTAB terminates

0144978

Your system has not been installed correctly

0162266

Questions and tips for R3SETUP on Windows NT / W2K

10.7.3.2. SAP® R/3® 4.6C, Oracle® 8.1.7

NúmeroTítulo

0015023

Initializing table TCPDB (RSXP0004) (EBCDIC)

0045619

R/3 with several languages or typefaces

0171356

SAP Software on Linux: Essential Comments

0195603

RedHat 6.1 Enterprise version: Known problems

0212876

The new archiving tool SAPCAR

0300900

Linux: Released DELL Hardware

0377187

RedHat 6.2: important remarks

0387074

INST: R/3 4.6C SR2 Installation on UNIX

0387077

INST: R/3 4.6C SR2 Inst. on UNIX - Oracle

0387078

SAP Software on UNIX: OS Dependencies 4.6C SR2

10.7.4. Requisitos de hardware

El siguiente equipo es suficiente para la instalación de un sistema SAP® R/3®. Si pretende darle uso productivo necesitará hacer un estudio detallado de sus necesidades:

Componente4.6B4.6C

Procesador

Pentium® III 800MHz x 2

Pentium® III 800MHz x 2

Memoria

1GB ECC

2GB ECC

Espacio en disco

50-60GB (IDES)

50-60GB (IDES)

Para su uso en producción le recomendamos procesadores Xeon™ con una caché grande, discos de alta velocidad (SCSI, controlador de RAID por hardware), USV y ECC-RAM. Un espacio en disco tan grande se debe al sistema IDES preconfigurado, que crea ficheros de bases de datos de 27 GB durante la instalación. Este espacio también es suficiente para sistemas de producción iniciales y datos de aplicación.

10.7.4.1. SAP® R/3® 4.6B, Oracle® 8.0.5

Este es el hardware que utilizamos al escribir este texto: placa base dual con 2 procesadores Pentium® III a 800 MHz, adaptador SCSI Adaptec® 29160 Ultra160 (para acceder a una unidad de cinta 40/80 GB DLT y CDROM), Mylex® AcceleRAID™ (2 canales, firmware 6.00-1-00 con 32 MB RAM). La controladora Mylex® RAID tiene conectados dos discos duros de 17 GB (replicados) y cuatro discos duros de 36 GB (RAID nivel 5).

10.7.4.2. SAP® R/3® 4.6C, Oracle® 8.1.7

Para esta instalación se usó un Dell™ PowerEdge™ 2500: placa base dual con 2 procesadores Pentium® III a 1000 MHz (256 kB de Caché), 2 GB PC133 ECC SDRAM, controladora RAID PERC/3 DC PCI con 128 MB y una unidad EIDE DVD-ROM. La controladora RAID tiene conectados dos discos duros 18 GB (replicados) y cuatro discos duros de 36 GB (RAID nivel 5).

10.7.5. Instalación de FreeBSD

Lo primero que tiene que hacer es instalar FreeBSD. Hay muchas formas de hacerlo. Nosotros instalamos FreeBSD 4.3 desde un FTP y FreeBSD 4.5 desde el CD de la distribución. Si necesita más información sobre los medios de instalación de FreeBSD consulte la Cómo preparar su propio medio de instalación.

10.7.5.1. Esquema de disco

Quisimos hacer el proceso lo más simple posible, así que usamos el esquema de disco de SAP® R/3® 46B y SAP® R/3® 46C SR2. Solo cambiamos los nombres de dispositivo debido a que las instalaciones tuvieron lugar en hardware diferente (/dev/da y /dev/amr respectivamente. Si utiliza una AMI MegaRAID® verá en pantalla /dev/amr0s1a en lugar de /dev/da0s1a):

Sistema de ficherosTamaño (bloques de 1k)Tamaño (GB)Montado en

/dev/da0s1a

1.016.303

1

/

/dev/da0s1b

6

swap

/dev/da0s1e

2.032.623

2

/var

/dev/da0s1f

8.205.339

8

/usr

/dev/da1s1e

45.734.361

45

/compat/linux/oracle

/dev/da1s1f

2.032.623

2

/compat/linux/sapmnt

/dev/da1s1g

2.032.623

2

/compat/linux/usr/sap

Configure e inicialice antes que nada las dos unidades lógicas con el software Mylex® o PERC/3 RAID. El software puede iniciarse durante la fase de arranque de BIOS.

Por favor, tenga en cuenta que el esquema de disco que utilizamos difiere ligeramente de las recomendaciones de SAP®, ya que SAP® sugiere montar los subdirectorios Oracle® (y algunos otros) por separado. Decidimos crearlos como subdirectorios reales para simplificar.

10.7.5.2. make world y un nuevo kernel

Descargue las fuentes -STABLE más recientes. Ejecute make world y compile su kernel personalizado. Recuerde incluir en él tanto los parámetros del kernel requeridos por SAP® R/3® como los que necesita Oracle®.

10.7.6. Instalación del entorno Linux

10.7.6.1. Instalación del sistema base Linux

Primero instale el port linux_base (como root):

# cd /usr/ports/emulators/linux_base
# make install distclean

10.7.6.2. Instalación del entorno de desarrollo Linux

El entorno de desarrollo Linux es imprescindible si quiere instalar Oracle® en FreeBSD según se explica en la Instalación de Oracle®:

# cd /usr/ports/devel/linux_devtools
# make install distclean

El entorno de desarrollo Linux solo ha de instalarse si sigue el proceso para instalar SAP® R/3® 46B IDES. No es necesario si Oracle® DB no está reenlazado («relinked») con el sistema FreeBSD. Este sería su caso si está usa el fichero comprimido tar de Oracle® de un sistema Linux.

10.7.6.3. Instalación de los RPM necesarios

Necesitará soporte PAM para iniciar el programa R3SETUP. Durante la primera instalación de SAP® en FreeBSD 4.3-STABLE intentamos instalar PAM con todas las dependencias y finalmente forzamos la instalación del paquete PAM, y funcionó. En SAP® R/3® 4.6C SR2 forzamos la instalación del RPM PAM, que también funcionó, así que parece que las dependencias no lo son tanto:

# rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \
pam-0.68-7.i386.rpm

Para que Oracle® 8.0.5 pueda lanzar el agente inteligente también tendremos que instalar el paquete Tcl de RedHat tcl-8.0.5-30.i386.rpm (si no, cuando lo reenlace durante la instalación de Oracle® no funcionará). Existen otros aspectos relacionados con el reenlazado de Oracle® a tener en cuenta durante la instalación, pero atañen a la versión para Linux de Oracle® y no son específicos de FreeBSD.

10.7.6.4. Sugerencias

Le recomendamos añadir linprocfs a /etc/fstab. Consulte linprocfs(5) para más información. Otro parámetro que debería configurar es kern.fallback_elf_brand=3 en /etc/sysctl.conf.

10.7.7. Creación del entorno SAP® R/3®

10.7.7.1. Creación de los sistemas de ficheros y puntos de montaje necesarios

Para una instalación sencilla es suficiente con crear los siguientes sistemas de ficheros:

punto de montajetamaño en GB

/compat/linux/oracle

45 GB

/compat/linux/sapmnt

2 GB

/compat/linux/usr/sap

2 GB

También es necesario crear algunos enlaces. Si no, el instalador SAP® tendrá problemas ya que buscará los siguientes enlaces:

# ln -s /compat/linux/oracle /oracle
# ln -s /compat/linux/sapmnt /sapmnt
# ln -s /compat/linux/usr/sap /usr/sap

Veamos unos cuantos errores que se le pueden presentar durante la instalación (en este caso con el sistema PRD y la instalación de SAP® R/3® 4.6C SR2):

INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200
    Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to
    /sapmnt/PRD/exe. Creating if it does not exist...

WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400
    Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file
    /compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The
    program cannot go on as long as this link exists at this
    location. Move the link to another location.

ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0
    can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content
    '/sapmnt/PRD/exe'

10.7.7.2. Creación de usuarios y directorios

SAP® R/3® necesita dos usuarios y tres grupos. Los nombres de usuario dependen del "SAP® system ID" (SID), y consisten en tres letras. Algunos de estos SID están reservados por SAP® (por ejemplo SAP y NIX. Tiene una lista completa de ellos en la documentación de SAP®). Para la instalación de IDES usamos IDS y para la instalación de 4.6C SR2 PRD, dado que ese sistema está pensado para un uso de producción. Tenemos por lo tanto los siguientes grupos (Los ID de grupo pueden ser diferentes, estos son solamente los valores que utilizamos en nuestra instalación):

ID de gruponombre de grupodescripción

100

dba

Administrador de base de datos

101

sapsys

Sistema SAP®

102

oper

Operador de base de datos

En una instalación por omisión de Oracle® solo se usa el grupo dba. Puede usar el grupo oper como grupo dba (consulte la documentación de Oracle® y SAP® para más información).

También necesitaremos los siguientes usuarios:

ID de usuarionombre de usuarionombre genéricogrupogrupos adicionalesdescripción

1000

idsadm/prdadm

sidadm

sapsys

oper

Administrador SAP®

1002

oraids/oraprd

orasid

dba

oper

Administrador Oracle®

Al añadir dichos usuarios mediante adduser(8) tenga en cuenta que debe incluir las siguientes entradas (observe la shell y el directorio home) al crear el "administrador SAP®":

Name: sidadm
Password: ******
Fullname: SAP Administrator SID
Uid: 1000
Gid: 101 (sapsys)
Class:
Groups: sapsys dba
HOME: /home/sidadm
Shell: bash  (/compat/linux/bin/bash)

y para el "Administrador Oracle®":

Name: orasid
Password: ******
Fullname: Oracle Administrator SID
Uid: 1002
Gid: 100 (dba)
Class:
Groups: dba
HOME: /oracle/sid
Shell: bash  (/compat/linux/bin/bash)

Esto también incluye al grupo oper en caso de que esté usando el grupo dba y el grupo oper.

10.7.7.3. Creación de directorios

Estos directorios se crean como sistemas de ficheros independientes. Esto depende totalmente de sus necesidades. Nosotros decidimos crearlos como directorios ya que todos están en el mismo RAID 5:

Primero vamos a configurar los propietarios y los derechos de algunos directorios (como root):

# chmod 775 /oracle
# chmod 777 /sapmnt
# chown root:dba /oracle
# chown sidadm:sapsys /compat/linux/usr/sap
# chmod 775 /compat/linux/usr/sap

Luego vamos a crear directorios como el usuario orasid. Estos serán todos subdirectorios de /oracle/SID:

# su - orasid
# cd /oracle/SID
# mkdir mirrlogA mirrlogB origlogA origlogB
# mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6
# mkdir saparch sapreorg
# exit

Para la instalación de Oracle® 8.1.7 tendrá que crear unos cuantos directorios más:

# su - orasid
# cd /oracle
# mkdir 805_32
# mkdir client stage
# mkdir client/80x_32
# mkdir stage/817_32
# cd /oracle/SID
# mkdir 817_32

El directorio client/80x_32 tiene que tener exactamente este nombre. No sustituya la x por un número ni por ninguna otra cosa.

En el tercer paso creamos directorios como usuario sidadm:

# su - sidadm
# cd /usr/sap
# mkdir SID
# mkdir trans
# exit

10.7.7.4. Entradas en /etc/services

SAP® R/3® requiere algunas entradas en /etc/services que es posible que no estén correctamente activadas durante la instalalación. Añada las siguientes entradas (necesita al menos las entradas correspondientes al número de instancia, en este caso, 00. No hará ningún daño añadir todas las entradas de 00 hasta 99 para dp, gw, sp y ms). Si va a utilizar un SAProuter o necesita acceder a SAP® OSS, también necesitará 99, ya que el puerto 3299 se usa generalmente para el proceso SAProuter en el sistema destino:

sapdp00    3200/tcp # SAP Dispatcher.      3200 + Instance-Number
sapgw00  3300/tcp # SAP Gateway.         3300 + Instance-Number
sapsp00  3400/tcp #                      3400 + Instance-Number
sapms00  3500/tcp #                      3500 + Instance-Number
sapmsSID 3600/tcp # SAP Message Server.  3600 + Instance-Number
sapgw00s   4800/tcp # SAP Secure Gateway   4800 + Instance-Number

10.7.7.5. Locales necesarios

SAP® requiere al menos dos locales que no forman parte de la instalación por defecto de RedHat. SAP® dispone de los paquetes RPMs que pueda necesitar; puede descargalos desde su FTP, aunque tenga en cuenta que solo pueden acceder al mismo los clientes con acceso OSS). Consulte la nota 0171356, que contiene una lista de los RPM que necesitará.

También puede crear enlaces (por ejemplo desde de_DE y en_US ), pero no se lo recomendamos si pretende configurar un sistema de producción (no obstante, hemos de reconocer que a nosotros nos ha funcionado con el sistema IDES sin ningún problema). Necesitará al menos los siguientes locales:

de_DE.ISO-8859-1
en_US.ISO-8859-1

Haga los enlaces de esta manera:

# cd /compat/linux/usr/shared/locale
# ln -s de_DE de_DE.ISO-8859-1
# ln -s en_US en_US.ISO-8859-1

Si no están habrá algunos problemas durante la instalación. Si se ignoran (es decir, si configura el STATUS de los pasos relacionados con esos locales a OK en el fichero CENTRDB.R3S) será imposible entrar al sistema SAP® sin tener que recurrir a ciertas triquiñuelas.

10.7.7.6. Personalización del kernel

Los sistemas SAP® R/3® necesitan muchos recursos, por eso hemos añadido los siguientes parámetros al fichero de configuración de su kernel:

# Set these for memory pigs (SAP and Oracle):
options MAXDSIZ="(1024*1024*1024)"
options DFLDSIZ="(1024*1024*1024)"
# System V options needed.
options SYSVSHM #SYSV-style shared memory
options SHMMAXPGS=262144 #max amount of shared mem. pages
#options SHMMAXPGS=393216 #use this for the 46C inst.parameters
options SHMMNI=256 #max number of shared memory ident if.
options SHMSEG=100 #max shared mem.segs per process
options SYSVMSG #SYSV-style message queues
options MSGSEG=32767 #max num. of mes.segments in system
options MSGSSZ=32 #size of msg-seg. MUST be power of 2
options MSGMNB=65535 #max char. per message queue
options MSGTQL=2046 #max amount of msgs in system
options SYSVSEM #SYSV-style semaphores
options SEMMNU=256 #number of semaphore UNDO structures
options SEMMNS=1024 #number of semaphores in system
options SEMMNI=520 #number of semaphore identifiers
options SEMUME=100       #number of UNDO keys

Puede consultar los valores mínimos en la documentación de SAP®. Como no hay detalles sobre Linux, consulte para mayor información la sección de HP-UX (32-bit). El sistema de instalación 4.6C SR2 tiene más memoria principal, asín que los segmentos compartidos pueden ser más extensos tanto para SAP® como para Oracle®; elija, por tanto, un número mayor de páginas de memoria compartida.

En la instalación por omisión de FreeBSD 4.5 en i386™, configure MAXDSIZ y DFLDSIZ como máximo a 1 GB. Si no lo hace podrían aparecer errores extraños como ORA-27102: out of memory y Linux Error: 12: Cannot allocate memory.

10.7.8. Instalación de SAP® R/3®

10.7.8.1. Preparación de los CDROM

Hay que montar y desmontar muchos CD-ROM durante la instalación. Si tiene suficientes unidades de CDROM, podría montarlos todos. Nosotros decidimos copiar el contenido de los CD-ROM a los directorios correspondientes:

/oracle/SID/sapreorg/nombre-cd

Donde nombre-cd era KERNEL, RDBMS, EXPORT1, EXPORT2, EXPORT3, EXPORT4, EXPORT5 y EXPORT6 para la instalación 4.6B/IDES, y KERNEL, RDBMS, DISK1, DISK2, DISK3, DISK4 y LANG para la instalación 4.6C SR2. Todos los nombres de fichero en los CDs montados deben estar en mayúsculas; si no es así use la opción -g al montar. Utilice lo siguiente:

# mount_cd9660 -g /dev/cd0a /mnt
# cp -R /mnt/* /oracle/SID/sapreorg/nombre-cd
# umount /mnt

10.7.8.2. Ejecución del "script" de instalación

Primero tendrá que preparar un directorio install:

# cd /oracle/SID/sapreorg
# mkdir install
# cd install

Una vez arrancado el "script" de instalación copiará casi todos los ficheros relevantes en el directorio install:

# /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH

La instalación IDES (4.6B) incluye un sistema de demostración SAP® R/3® totalmente personalizado, así que hay seis CD EXPORT en lugar de solo tres. La plantilla de instalación CENTRDB.R3S está pensada para una instancia central estándar (R/3® y base de datos), no la instancia central IDES, así que hay que copiar el CENTRDB.R3S correspondiente del directorio EXPORT1. Si no lo hace R3SETUP solo pedirá tres CD EXPORT.

La nueva versión de SAP® 4.6C SR2 incluye cuatro CDs EXPORT. El fichero de parámetros que controla los pasos de la instalación es CENTRAL.R3S. A diferencia de versiones versiones anteriores, no existen patrones de instalación por separado para una instancia central con o sin base de datos. SAP® utiliza un patrón separado para la instalación de la base de datos. Para reiniciar la instalación después es suficiente reiniciarla con el fichero original.

Durante y después de la instalación, SAP® necesita que hostname devuelva sólamente el nombre del sistema, no el nombre cualificado de dominio. Configure el nombre del equipo de ese modo, o active un alias mediante alias hostname='hostname -s' para orasid y para sidadm (y para root al menos durante los pasos de la instalación realizados como root). También puede configurar los ficheros .profile y .login de los usuarios que se crean durante la instalación SAP®.

10.7.8.3. Inicio de R3SETUP 4.6B

Asegúrese de que LD_LIBRARY_PATH esté configurada correctamente:

# export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib

Inicie R3SETUP como root desde el directorio de instalación:

# cd /oracle/IDS/sapreorg/install
# ./R3SETUP -f CENTRDB.R3S

El "script" le preguntará algunas cosas; le mostramos aquí entre corchetes la respuesta por defecto, y después la respuesta que nosotros introdujimos:

PreguntaPor omisiónEntrada

Enter SAP System ID

[C11]

IDSIntro

Enter SAP Instance Number

[00]

Intro

Enter SAPMOUNT Directory

[/sapmnt]

Intro

Enter name of SAP central host

[troubadix.domain.de]

Intro

Enter name of SAP db host

[troubadix]

Intro

Select character set

[1] (WE8DEC)

Intro

Enter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.6

1Intro

Extract Oracle Client archive

[1] (Yes, extract)

Intro

Enter path to KERNEL CD

[/sapcd]

/oracle/IDS/sapreorg/KERNEL

Enter path to RDBMS CD

[/sapcd]

/oracle/IDS/sapreorg/RDBMS

Enter path to EXPORT1 CD

[/sapcd]

/oracle/IDS/sapreorg/EXPORT1

Directory to copy EXPORT1 CD

[/oracle/IDS/sapreorg/CD4_DIR]

Intro

Enter path to EXPORT2 CD

[/sapcd]

/oracle/IDS/sapreorg/EXPORT2

Directory to copy EXPORT2 CD

[/oracle/IDS/sapreorg/CD5_DIR]

Intro

Enter path to EXPORT3 CD

[/sapcd]

/oracle/IDS/sapreorg/EXPORT3

Directory to copy EXPORT3 CD

[/oracle/IDS/sapreorg/CD6_DIR]

Intro

Enter path to EXPORT4 CD

[/sapcd]

/oracle/IDS/sapreorg/EXPORT4

Directory to copy EXPORT4 CD

[/oracle/IDS/sapreorg/CD7_DIR]

Intro

Enter path to EXPORT5 CD

[/sapcd]

/oracle/IDS/sapreorg/EXPORT5

Directory to copy EXPORT5 CD

[/oracle/IDS/sapreorg/CD8_DIR]

Intro

Enter path to EXPORT6 CD

[/sapcd]

/oracle/IDS/sapreorg/EXPORT6

Directory to copy EXPORT6 CD

[/oracle/IDS/sapreorg/CD9_DIR]

Intro

Enter amount of RAM for SAP + DB

850Intro (en Megabytes)

Service Entry Message Server

[3600]

Intro

Enter Group-ID of sapsys

[101]

Intro

Enter Group-ID of oper

[102]

Intro

Enter Group-ID of dba

[100]

Intro

Enter User-ID of sidadm

[1000]

Intro

Enter User-ID of orasid

[1002]

Intro

Number of parallel procs

[2]

Intro

Si no ha copiado los CD a su disco duro el instalador SAP® no podrá encontrar el CD que necesite (identifica los contenidos mediante fichero LABEL.ASC de cada CD) y por lo tanto le pedirá que introduzca y monte el CD, o que confirme o introduzca la ruta de montaje.

CENTRDB.R3S puede contener algún error. En nuestro caso, solicitó el CD EXPORT4 más de una vez, pero se le indicó la clave correcta (6_LOCATION, luego 7_LOCATION, etc), así que pudimos continuar introduciendo los valores correctos.

Aparte de algunos problemas que se detallan más adelante deberíamos ir llegando a la instalación del software de base de datos Oracle®.

10.7.8.4. Iniciar R3SETUP 4.6C SR2

Asegúrese de que LD_LIBRARY_PATH esté correctamente configurada. Tenga en cuenta de que es un valor diferente de la instalación 4.6B con Oracle® 8.0.5:

# export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib

Arranque R3SETUP como el usuario root desde el directorio de instalación:

# cd /oracle/PRD/sapreorg/install
# ./R3SETUP -f CENTRAL.R3S

El "script" le preguntará algunas cosas. Le presentamos la respuesta por omisión entre corchetes y después la respuesta que dimos nosotros):

PreguntaPor omisiónEntrada

Enter SAP System ID

[C11]

PRDIntro

Enter SAP Instance Number

[00]

Intro

Enter SAPMOUNT Directory

[/sapmnt]

Intro

Enter name of SAP central host

[majestix]

Intro

Enter Database System ID

[PRD]

PRDIntro

Enter name of SAP db host

[majestix]

Intro

Select character set

[1] (WE8DEC)

Intro

Enter Oracle server version (2) Oracle 8.1.7

2Intro

Extract Oracle Client archive

[1] (Yes, extract)

Intro

Enter path to KERNEL CD

[/sapcd]

/oracle/PRD/sapreorg/KERNEL

Enter amount of RAM for SAP + DB

2044

1800Intro (in Megabytes)

Service Entry Message Server

[3600]

Intro

Enter Group-ID of sapsys

[100]

Intro

Enter Group-ID of oper

[101]

Intro

Enter Group-ID of dba

[102]

Intro

Enter User-ID of oraprd

[1002]

Intro

Enter User-ID of prdadm

[1000]

Intro

LDAP support

3Intro (no support)

Installation step completed

[1] (continue)

Intro

Choose installation service

[1] (DB inst,file)

Intro

La creación de usuarios da un error durante la instalación en las fases OSUSERDBSID_IND_ORA (al crear al usuario orasid) y OSUSERSIDADM_IND_ORA (al crear el usuario sidadm).

Más adelante hablaremos de cierto problemas que aún tenemos pendientes, pero ha llegado el momento de instalar el software de base de datos Oracle®.

10.7.9. Instalación de Oracle® 8.0.5

Consulte los Readme de Oracle® y las notas de de SAP® sobre Linux y Oracle® DB por si hubiera algo que le pueda afectar. La mayoría de los problemas, por no decir todos, tienen su origen en bibliotecas incompatibles.

Para mayor información sobre la instalación de Oracle® diríjase al capítulo de instalación de Oracle®.

10.7.9.1. Instalación de Oracle® 8.0.5 con orainst

Si quiere instalar Oracle® 8.0.5 necesitará unas cuantas bibliotecas para el enlazado, ya que Oracle® 8.0.5 fué enlazado con una glibc antigua (la de RedHat 6.0), pero RedHat 6.1 usa una nueva glibc. Tendrá que instalar los siguientes paquetes para asegurarse que el reenlazado funcione:

compat-libs-5.2-2.i386.rpm

compat-glibc-5.2-2.0.7.2.i386.rpm

compat-egcs-5.2-1.0.3a.1.i386.rpm

compat-egcs-c++-5.2-1.0.3a.1.i386.rpm

compat-binutils-5.2-2.9.1.0.23.1.i386.rpm

Para más información consulte las notas correspondientes de SAP® o los Readme de Oracle®. Si no es posible (durante la instalación no tuvimos tiempo suficiente para ello), se podrían utilizar los binarios originales, o los binarios reenlazados de un sistema original RedHat.

Instale el paquete Tcl de RedHat para compilar el agente inteligente. Si no puede conseguir tcl-8.0.3-20.i386.rpm debería funcionar una versión más reciente, por ejemplo tcl-8.0.5-30.i386.rpm para RedHat.

Aparte del reenlazado, la instalación es muy sencilla:

# su - oraids
# export TERM=xterm
# export ORACLE_TERM=xterm
# export ORACLE_HOME=/oracle/IDS
# cd $ORACLE_HOME/orainst_sap
# ./orainst

Confirme todas las pantallas con Intro hasta que el software esté instalado; todas excepto en la que debe quitar la marca de instalación al visualizador de textos Oracle® en línea, ya que no existe para Linux. Oracle® intentará, gracias a esto, reenlazar con i386-glibc20-linux-gcc en lugar de gcc, egcs o i386-redhat-linux-gcc.

Debido a la falta de tiempo decidimos usar los binarios de una versión Oracle® 8.0.5 PreProduction, después de que nuestro primer intento de que funcionara la versión del CD RDBMS fallara y viendo que encontrar y utilizar los RPM correctos hubiera sido una pesadilla.

10.7.9.2. Instalación de Oracle® 8.0.5 "Pre-production Release" para Linux (Kernel 2.0.33)

La instalación es bastante fácil. Monte el CD e inicie el instalador. Le preguntará por la ubicación del directorio home de Oracle®, y copiará en él todos los binarios. (Nosotros no eliminamos los restos de una instalación RDBMS anterior que no terminó de llegó a terminar).

Tras esto la base de datos Oracle® puede arrancar.

10.7.10. Instalación desde el fichero comprimido de Linux Oracle® 8.1.7

Descomprima el fichero oracle81732.tgz (creado en el directorio de instalación en un sistema Linux) y descomprímalo en /oracle/SID/817_32/.

10.7.11. Continúe con la instalación SAP® R/3®

Revise las configuraciones del entorno de los usuarios idsamd (sidadm) y oraids (orasid). Ambos deben tener los ficheros .profile, .login y .cshrc con hostname correctamente configurado. En caso que el nombre del sistema sea el nombre cualificado completo tendrá que cambiar hostname a hostname -s en los tres ficheros anteriormente citados.

10.7.11.1. Carga de la base de datos

Hecho esto puede rearrancar R3SETUP o volver a arrancar la instalación (dependiendo si eligió salir o no). R3SETUP crea las tablas y carga los datos (en 46B IDES, desde EXPORT1 a EXPORT6, en 46C desde DISK1 a DISK4) mediante R3load.

Cuando se termina la carga de la base de datos (que puede llevar un par de horas) se le pedirán algunas contraseñas. En una instalación de prueba puede usar unas contraseñas de compromiso. (use una contraseña de verdad si le preocupa siquiera ligeramente la seguridad):

PreguntaEntrada

Enter Password for sapr3

sapIntro

Confirum Password for sapr3

sapIntro

Enter Password for sys

change_on_installEnter

Confirm Password for sys

change_on_installEnter

Enter Password for system

managerIntro

Confirm Password for system

managerIntro

Aquí tuvimos problemas con dipgntab en la instalación de 4.6B.

10.7.11.2. Las escuchas

Arranque las escuchas de Oracle® con el usuario orasid de la siguiente manera:

% umask 0; lsnrctl start

Si no lo hace así verá un error ORA-12546, ya que los sockets no tendrán los permisos correctos. Consulte la nota 072984 de SAP®.

10.7.11.3. Actualización de tablas MNLS

Si tiene previsto importar idiomas que no sean Latin-1 en SAP® tiene que actualizar las tablas "Multi National Language Support". Tiene más información sobre esto en las notas de SAP® OSS 15023 y 45619. Si no es su caso puede saltarse esta parte de la instalación de SAP®.

Aunque no necesite soporte MNLS sigue siendo necesario que revise la tabla TCPDB y que la inicialice si no lo ha hecho ya. Consulte las notas 0015023 y 0045619 de SAP® para más información.

10.7.12. Pasos para después de la instalación

10.7.12.1. Solicitar una licencia SAP® R/3®

Tiene que solicitar una licencia de SAP® R/3®. No tendrá más remedio, puesto que la licencia temporal que se usa durante la instalación tiene un límite de validez de cuatro semanas. Necesitará la llave hardware. Entre al sistema como usuario idsadm y ejecute saplicense:

# /sapmnt/IDS/exe/saplicense -get

Si ejecuta saplicense sin parámetros verá una lista de opciones. Una vez que tenga la licencia en su poder la podrá instalar del siguiente modo:

# /sapmnt/IDS/exe/saplicense -install

Se le solicitará que introduzca los siguientes valores:

SAP SYSTEM ID   = SID, 3 caracteres
CUSTOMER KEY    = llave hardware, 11 caracteres
INSTALLATION NO = instalación, 10 caracteres
EXPIRATION DATE = yyyymmdd, normalmente "99991231"
LICENSE KEY     = licencia, 24 caracteres

10.7.12.2. Crear usuarios

Cree un usuario dentro del cliente 000 (es necesario para algunas tareas que requieren hacerse dentro del cliente 000, pero con un usuario que no sea ni sap* ni ddic). Nosotros solemos elegir para este usuario el nombre de wartung (o service, ambos "servicio" en castellano). Los perfiles son sap_new y sap_all. Para mayor seguridad las contraseñas para usuarios por defecto dentro de todos los clientes deben cambiarse (incluidos los usuarios sap* y ddic).

10.7.12.3. Configurar sistema de transporte, perfil, modos de operación, etc.

Dentro del cliente 000 y con un usuario que no sea ddic ni sap*, haga al menos lo siguiente:

TareaTransacción

Configurar sistema de transporte, por ejemplo como Stand-Alone Transport Domain Entity

STMS

Crear / editar perfil para el sistema

RZ10

Mantener modos de operación e instancias

RZ04

Todos estos (y muchos más) pasos para ejecutar después de la instalación se explican de forma detallada en las guías de instalación de SAP®.

10.7.12.4. Editar initsid.sap (initIDS.sap)

El fichero /oracle/IDS/dbs/initIDS.sap contiene la copia de seguridad del perfil de de SAP®. Aquí es donde debe definir el tamaño de la cinta a utilizar, tipo de conpresión, etc. Las siguientes modificaciones nos permitirían ejecutar sapdba / brbackup:

compress = hardware
archive_function = copy_delete_save
cpio_flags = "-ov --format=newc --block-size=128 --quiet"
cpio_in_flags = "-iuv --block-size=128 --quiet"
tape_size = 38000M
tape_address = /dev/nsa0
tape_address_rew = /dev/sa0

Explicación:

compress: La cinta que usamos es una HP DLT1 que tiene compresión por hardware.

archive_function: Define el comportamiento por omisión del almacenaje de los logs de Oracle®: los nuevos ficheros de log se guardan en cinta, los ficheros de log que ya han sido guardados se guardan de nuevo y luego se borran. Así se evitan muchos problemas si necesita recuperar la base de datos y una de las cintas está dañada.

cpio_flags: por omisión se usa -B, que asigna un tamaño de bloque de 5120 Bytes. HP recomienda un tamaño de bloque de 32 K como mínimo; usamos --block-size=128 para que sea de 64 K. Necesitaremos usar --format=newc porque tenemos números de inodo mayores a 65535. La última opción (--quiet) se necesita ya que brbackup se queja en cuanto cpio imprime los números de bloque guardados.

cpio_in_flags: Parámetros necesarios para cargar datos desde la cinta. El formato es reconocido automáticamente.

tape_size: La capacidad de almacenaje de la cinta. Por razones de seguridad (nosotros usamos compresión por hardware) el valor es ligeramente menor que el valor real.

tape_address: El dispositivo (que no permite el rebobinado) que se usará con cpio.

tape_address_rew: El dispositivo (que permite el rebobinado) que se usará con cpio.

10.7.12.5. Aspectos de la configuración una vez concluida la instalación

Los siguientes parámetros SAP® deben personalizarse una vez concluída la instalación (los ejemplos son para IDES 46B, 1 GB de memoria):

NombreValor

ztta/roll_extension

250000000

abap/heap_area_dia

300000000

abap/heap_area_nondia

400000000

em/initial_size_MB

256

em/blocksize_kB

1024

ipc/shm_psize_40

70000000

SAP® Note 0013026:

NombreValor

ztta/dynpro_area

2500000

SAP® Note 0157246:

NombreValor

rdisp/ROLL_MAXFS

16000

rdisp/PG_MAXFS

30000

En un sistema con 1 GB de memoria y los parámetros arriba expuestos puede esperarse encontrar un consumo de memoria similar al siguiente:

Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free

10.7.13. Problemas durante la instalación

10.7.13.1. Reiniciar R3SETUP una vez arreglado el problema

R3SETUP se detiene si encuentra un error. Si ha revisado los logs y ha corregido el error reinicie R3SETUP; hágalo seleccionando la opción REPEAT en el paso donde R3SETUP se detuvo.

Cuando quiera reiniciar R3SETUP inícielo con el fichero R3S correspondiente:

# ./R3SETUP -f CENTRDB.R3S

en el caso de 4.6B, o con

# ./R3SETUP -f CENTRAL.R3S

en 4.6C; no importa si el error ocurrió con CENTRAL.R3S o con DATABASE.R3S.

En algunas etapas, R3SETUP asume que la base de datos y los procesos SAP® están en marcha (como aquellos en los cuales se completaron los pasos). Si hay errores y por ejemplo la base de datos no se puede iniciar tendrá que arrancar la base de datos y SAP® manualmente una vez haya corregido los errores y antes de iniciar R3SETUP nuevamente.

No olvide iniciar también la escucha de Oracle® (como orasid con umask 0; lsnrctl start) si también tuvo que detenerlo (si por ejemplo hubo que reiniciar el sistema).

10.7.13.2. OSUSERSIDADM_IND_ORA durante R3SETUP

Si R3SETUP se queja en este etapa edite la plantilla R3SETUP que esté usando en ese momento (CENTRDB.R3S (en 4.6B) o CENTRAL.R3S o DATABASE.R3S (en 4.6C)). Ubique [OSUSERSIDADM_IND_ORA] o busque la única entrada STATUS=ERROR y edite los siguientes valores:

HOME=/home/sidadm (was empty)
STATUS=OK (had status ERROR)

Hecho esto, reinicie R3SETUP.

10.7.13.3. OSUSERDBSID_IND_ORA durante R3SETUP

Es posible que R3SETUP se queje también en esta etapa. El error aquí es similar al de la fase OSUSERSIDADM_IND_ORA. Edite la plantilla R3SETUP que esté usando (CENTRDB.R3S (en 4.6B) o CENTRAL.R3S o DATABASE.R3S (en 4.6C)). Ubique [OSUSERDBSID_IND_ORA] o busque la única entrada STATUS=ERROR y edite los siguientes valores en esa sección:

STATUS=OK

Hecho esto reinicie R3SETUP.

10.7.13.4. oraview.vrf FILE NOT FOUND durante la instalación de Oracle®

No ha dejado sin seleccionar la opción de instalar el visualizador de texto en línea de Oracle® antes de iniciar la instalación. Está seleccionado para ser instalado, aunque la aplicación no existe para Linux. Deje sin seleccionar el producto en el menú de instalación de Oracle® y reinicie la instalación.

10.7.13.5. TEXTENV_INVALID durante R3SETUP, o inicio de RFC o SAPgui

Si se encuentra con este error significa que falta el locale correcto. La nota 0171356 de SAP® contiene una lista de RPM que deben instalarse (p.ej. saplocales-1.0-3, saposcheck-1.0-1 para RedHat 6.1). En caso de que ignore todos los errores relacionados y configure los STATUS correspondientes de ERROR a OK (en CENTRDB.R3S) cada vez que R3SETUP se queje y simplemente reinicie R3SETUP; el sistema SAP® no estará configurado correctamente y no podrá conectarse al sistema con SAPgui, aunque el sistema pueda arrancar. Si intenta conectar con el antiguo SAPgui de Linux recibirá los siguientes mensajes:

Sat May 5 14:23:14 2001
*** ERROR => no valid userarea given [trgmsgo. 0401]
Sat May 5 14:23:22 2001
*** ERROR => ERROR NR 24 occured [trgmsgi. 0410]
*** ERROR => Error when generating text environment. [trgmsgi. 0435]
*** ERROR => function failed [trgmsgi. 0447]
*** ERROR => no socket operation allowed [trxio.c 3363]
Speicherzugriffsfehler

Este comportamiento se debe a que SAP® R/3® es incapaz de asignar correctamente un locale y tampoco puede configurarse a sí mismo correctamente (faltan entradas en algunas tablas de la base de datos). Añada las siguientes entradas al fichero DEFAULT.PFL y podrá conectarse a SAP® (vea la nota 0043288):

abap/set_etct_env_at_new_mode = 0
install/collate/active = 0
rscp/TCP0B = TCP0B

Reinicie el sistema SAP®. Puede conectar al sistema, aunque la configuración de idioma o de país puede que no funcione como se espera de ella. Una vez corregidas las configuraciones de país (y proporcionados los locales adecuados) puede eliminar estas entradas de DEFAULT.PFL y el sistema SAP® puede reiniciarse.

10.7.13.6. ORA-00001

Este error solo aparece con Oracle® 8.1.7 en FreeBSD 4.5. Se debe a que la base de datos Oracle® no puede inicializarse correctamente y se viene abajo, dejando semáforos y memoria compartida en el sistema. El siguiente intento de iniciar la base de datos produce el error ORA-00001.

Encuéntrelos con ipcs -a y elimínelos con ipcrm.

10.7.13.7. ORA-00445 (Brackground Process PMON Did Not Start)

Este error tuvo lugar con Oracle® 8.1.7. Aparece si se arranca la base de datos con el "script" startsap (por ejemplo startsap_majestix_00) con el usuario prdadm.

Una solución (entre otras) es iniciar la base de datos con el usuario oraprd en lugar de hacerlo con svrmgrl:

% svrmgrl
SVRMGR> connect internal;
SVRMGR> startup;
SVRMGR> exit

10.7.13.8. ORA-12546 (Start Listener with Correct Permissions)

Inicie la escucha de Oracle® como usuario oraids con la siguiente orden:

# umask 0; lsnrctl start

De no ser así puede encontrarse con el error ORA-12546, ya que los sockets no tendrán los permisos adecuados. Consulte la nota de SAP® 0072984.

10.7.13.9. ORA-27102 (Out of Memory)

Este error ocurre al tratar de usar valores mayores a 1 GB (1024x1024x1024) en MAXDSIZ y DFLDSIZ. Recibiremos, además, este otro error: Linux Error 12: Cannot allocate memory.

10.7.13.10. [DIPGNTAB_IND_IND] during R3SETUP

Consulte la nota de SAP® 0130581 de (R3SETUP step (DIPGNTAB terminates). Por alguna razón durante la instalación específica IDES el proceso de instalación no usaba el nombre de sistema correcto SAP®"IDS" sino la cadena vacía "". Esto provocaba algunos errores menores en el acceso a directorios, ya que las rutas se generan dinámicamente en base a dicho SID (en este caso IDS). En lugar de ejecutar los accesos del siguiente modo :

/usr/sap/IDS/SYS/...
/usr/sap/IDS/DVMGS00

se usaron las siguientes rutas:

/usr/sap//SYS/...
/usr/sap/D00

Para continuar con la instalación creamos un enlace y un directorio adicional:

# pwd
/compat/linux/usr/sap
# ls -l
total 4
drwxr-xr-x 3  idsadm sapsys 512 May 5 11:20 D00
drwxr-x--x 5  idsadm sapsys 512 May 5 11:35 IDS
lrwxr-xr-x 1  root   sapsys 7 May 5 11:35 SYS -> IDS/SYS
drwxrwxr-x 2  idsadm sapsys 512 May 5 13:00 tmp
drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans

Encontramos una descripción de este comportamiento en las notas de SAP®. (0029227 y 0008401). En la instalación de SAP® 4.6C no tuvimos estos problemas.

10.7.13.11. [RFCRSWBOINI_IND_IND] during R3SETUP

Durante la instalación de SAP® 4.6C nos encontramos con este error, cuyo origen está en un error que tuvo lugar anteriormente durante la propia instalación. Busque en sus ficheros de log y corrija el problema.

Si despues de buscar en los logs el error resulta ser el correcto (revise las notas de SAP®), puede poner el STATUS del paso donde se produce el error de ERROR a OK (en el fichero CENTRDB.R3S) y reiniciar R3SETUP. Una vez finalizada la instalación, tiene que ejecutar el informe RSWBOINS de la transacción SE38. Consulte la nota SAP® 0162266 para más información sobre las fases RFCRSWBOINI y RFCRADDBDIF.

10.7.13.12. [RFCRADDBDIF_IND_IND] during R3SETUP

Aquí sucede lo mismo de antes, asegúrese, revisando los logs, de que la causa de este error no esté en algún problema previo.

Si en la nota de SAP® 0162266 está la solución ponga el STATUS del paso donde se produce el error de ERROR a OK (en el fichero CENTRDB.R3S) y reinicie R3SETUP. Una vez finalizada la instalación ejecute el informe RADDBDIF desde la transacción SE38.

10.7.13.13. sigaction sig31: File size limit exceeded

Este error ocurrió durante el inicio del proceso SAP®disp+work. Si inicia SAP® con el "script" startsap se inician los subprocesos que se separan y hacen el "trabajo sucio" de iniciar el resto de procesos de SAP®, pero es importante saber que el propio "script" no notará si algo ha ido mal.

Puede revisar si los procesos SAP® se iniciaron correctamente con ps ax | grep SID, que le proporcionará una lista de todos los procesos de Oracle® y de SAP®. Si parece que algunos procesos no están, o si no puede conectarse al sistema SAP® revise los logs que encontrará en /usr/sap/SID/DVEBMGSnr/work/. Los ficheros que debe revisar son dev_ms y dev_disp.

La señal 31 aparece si la cantidad de memoria compartida asignada a Oracle® y SAP® supera la definida dentro del fichero de configuración del kernel y puede resolverse usando un valor mayor:

# larger value for 46C production systems:
options SHMMAXPGS=393216
# smaller value sufficient for 46B:
#options SHMMAXPGS=262144

10.7.13.14. Start of saposcol Failed

Hay algunos problemas con el programa saposcol (version 4.6D). El sistema SAP® utiliza saposcol para recoger datos del rendimiento del sistema. Este programa no es necesario para usar el sistema SAP®, así que el problema puede considerarse como poco importante. La versión más antigua (4.6B) funciona, pero no recoge todos los datos (muchas llamadas devolverán un 0, por ejemplo el uso de CPU).

10.8. Temas avanzados

Si siente curiosidad por saber cómo funciona la compatibilidad con Linux esta es la sección que debe leer. La mayor parte de lo que sigue está basado casi en su totalidad en un mensaje enviado por Terry Lambert tlambert@primenet.com a la lista lista de charla de FreeBSD (Message ID: <199906020108.SAA07001@usr09.primenet.com>).

10.8.1. ?Cómo funciona?

FreeBSD dispone de una abstracció denominada "cargador de clase en ejecución". Esto no es más que un bloque de código incrustado en la llamada execve(2) del sistema.

Históricamente las plataformas UNIX® disponían de un único cargador de binarios, que en última instancia (fallback) recurría al cargador #! para ejecutar cualesquiera intérpretes o scripts de la shell. Ese cargador único examinaba el número mágico (generalmente los 4 u 8 primeros bytes del fichero) para ver si era un binario reconocible por el sistema y, en tal caso, invocaba al cargador binario.

Si no era de tipo binario, la llamada execve(2) devolvía un error y la shell intentaba empezar a ejecutarlo como órdenes shell, tomando por defecto como punto de partida "la shell actual, sea cual sea".

Posteriormente se pensó en hacer una modificación de manera que sh(1) examinara los dos primeros caracteres, de modo que si eran :\n se llamaba a la shell csh(1) en su lugar (parece ser que en SCO fueron los primeros en utilizar ese truco).

Lo que ocurre ahora es que FreeBSD dispone de una lista de cargadores, en lugar de uno solo. FreeBSD recorre esa lista de cargadores, con un cargador genérico #! que sabe reconocer los intérpretes en base a los caracteres que siguen al siguiente espacio en blanco, con /bin/sh como último recurso.

Para dar soporte a la ABI ("Application Binary Interface") de Linux, FreeBSD interpreta el número mágico como un binario ELF ("Executable and Linking Format"): En este punto no hace distinción entre FreeBSD, Solaris™, Linux® o cualquier otro SO que tenga un tipo de imagen ELF.

El cargador ELF busca entonces una marca (brand) especial, una sección de comentarios en la imagen ELF que no está presente en los binarios ELF de SVR4/Solaris™.

Para que los binarios de Linux funcionen deben estar marcados con brandelf(1) como tipo Linux:

# brandelf -t Linux file

Hecho esto el cargador ELF verá la marca Linux en el fichero.

Cuando el cargador ELF ve la marca Linux sustituye un puntero en la estructura proc. Todas las llamadas del sistema se indexan a través de este puntero (en un sistema UNIX® tradicional sería el «array» de estructura sysent[] que contiene las llamadas del sistema). Además, el proceso se marca con unos indicadores ("flags") para que el vector trampa del código de envío señales lo maneje de una forma determinada, así como otros arreglos (menores) que serán utilizados por el módulo Linux del kernel.

El vector de llamada del sistema Linux contiene, entre otras cosas, una lista de entradas sysent[] cuyas direcciones residen en el módulo del kernel.

Cuando el binario Linux realiza una llamada al sistema, el código trampa extrae el puntero a la función de la llamada del sistema de la estructura proc, y así obtiene los puntos de entrada a las llamadas del sistema Linux, no las de FreeBSD.

Además, el modo Linux cambia la raíz de las búsquedas de una forma dinámica. En efecto, esto es lo que hace la opción union cuando se monta un sistema de ficheros (¡y que no es lo mismo que el sistema de ficheros unionfs!). Primero se hace un intento de buscar el fichero en el directorio /compat/linux/ruta-original y solo después, si lo anterior falla, se repite la búsqueda en el directorio /ruta-original. Esto permite que se puedan ejecutar binarios que necesitan de otros binarios (por ejemplo las herramientas de programación ("toolchain") de Linux pueden ejecutarse en su totalidad bajo la ABI de Linux). Esto significa también que los binarios Linux pueden cargar y ejecutar binarios FreeBSD si los binarios Linux equivalentes no se hallan presentes y que se puede poner una orden uname(1) en el árbol de directorios /compat/linux para poder estar seguros de que los binarios Linux no puedan decir que no estaban ejecutándose en Linux.

En efecto, hay un kernel Linux en el kernel FreeBSD; las distintas funciones subyacentes que implementan todos los servicios proporcionados por el kernel son idénticas en ambas, las tablas de entradas de llamadas del sistema en FreeBSD y en Linux: operaciones del sistema de ficheros, operaciones de memoria virtual, envío de señales IPC System V, etc. La única diferencia es que los binarios FreeBSD reciben sus funciones de conexión ("glue") y los binarios Linux las suyas (la mayoría de los sistemas operativos más antiguos solo tienen sus propias funciones de conexión: direcciones de funciones en un "array" de estructura sysent[] estática y global, en lugar de direcciones de funciones que se extraen a partir de un puntero inicializado dinámicamente en la estructura proc del proceso que hace la llamada).

?Cuál es entonces la ABI nativa de FreeBSD? No importa. Básicamente, la única diferencia es (ahora mismo; esto podría cambiar y probablemente lo hará en una release futura) que las funciones de conexión de FreeBSD están enlazadas estáticamente en el kernel mientras que las de Linux pueden estarlo también estáticamente o se puede acceder a ellas por medio de un módulo del kernel.

Bien, pero ?de verdad es esto una emulación? No. Es una implementación ABI, no una emulación. No hay un emulador involucrado (ni un simulador, para adelantarnos a la siguiente pregunta).

Entonces ?por qué a veces se le llama "emulación Linux"? ¡Para hacer más difícil el vender FreeBSD! En serio, se debe a que la primera implementación se hizo en un momento en que realmente no había ninguna palabra distinta a esa para describir lo que se estaba haciendo; decir que FreeBSD ejecutaba binarios Linux no era cierto si no se compilaba el código o se cargaba un módulo; hacía falta una forma de describir todo esto y acabamos usando "emulador Linux".


Puede descargar éste y muchos otros documentos desde https://download.freebsd.org/ftp/doc/

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <freebsd-questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <freebsd-doc@FreeBSD.org>.