Instale o Oracle 11g no Ubuntu 14.04 [duplicado]

1

Eu venho tentando há dias ter o Oracle 11g instalado no Ubuntu 14.04. Há um número de notas / tutoriais sobre isso, e eu tentei mais de dez deles, mas eu continuo encontrando o mesmo problema, uma vez executando o instalador do Oracle, na etapa 'Vincular binários' sempre reclama com esta mensagem:

Error in invoking target 'install' of makefile '/u01/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk'. See '/u01/app/oraInventory/logs/installActions2015-01-07_03-25-51OM.log' for details.

No arquivo de log, ele diz

INFO: //usr/lib/x86_64-linux-gnu/libstdc++.so.5: undefined reference to 'memcpy@GLIBC_2.14'
collect2: error: ld returned 1 exit status

Das dezenas de fóruns que pesquisei, a maioria parece sugerir que o problema é que o Ubuntu vem com o libstdc ++ 6 instalado, mas o Oracle 11gR2 requer o libstdc ++ 5.

Então, como sugerido em muitos lugares, fiz algo semelhante ao seguinte, embora eu precisei pesquisar um pouco para encontrar as versões corretas:

wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-3.3/libstdc++5_3.3.6-17ubuntu1_amd64.deb
dpkg-deb -x libstdc++5_3.3.6-17ubuntu1_amd64.deb ia64-libs
sudo cp ia64-libs/usr/lib/libstdc++.so.5.0.7 /usr/lib64/
cd /usr/lib64/
sudo ln -s libstdc++.so.5.0.7 libstdc++.so.5

wget http://security.ubuntu.com/ubuntu/pool/universe/i/ia32-libs/ia32-libs_2.7ubuntu6.1_amd64.deb
dpkg-deb -x ia32-libs_2.7ubuntu6.1_amd64.deb ia32-libs
sudo cp ia32-libs/usr/lib32/libstdc++.so.5.0.7 /usr/lib32/
cd /usr/lib32
sudo ln -s libstdc++.so.5.0.7 libstdc++.so.5

Mas isso ... só ... não ... funciona!

Eu reiniciei o sistema para garantir que isso seja efetivo, mas sem sorte. Esta é uma instalação limpa do Ubuntu 14.04, com nada além de algumas configurações de configuração de proxy e o java 7 instalado.

Eu criei um usuário oracle separado (e um grupo oinstall e dba) e suponho ao usuário oracle antes de executar o script runInstaller a partir do oracle extraído faça o download.

Alguém tem um guia passo-a-passo aplicável ao Ubuntu 14.04 e ao Oracle 11gR2?

Atualização Sex 09 Jan 2015

Mais algumas informações que podem ser relevantes.

Em / usr / lib32 / eu tenho isto:

lrwxrwxrwx  1 root root     18 Jan  7 15:22 libstdc++.so.5 -> libstdc++.so.5.0.7
-rw-r--r--  1 root root 737192 Jan  7 15:21 libstdc++.so.5.0.7

Em / usr / lib64 / eu tenho isto:

lrwxrwxrwx  1 root root     42 Jan  7 13:46 libc_nonshared.a -> /usr/lib/x86_64-linux-gnu/libc_nonshared.a
lrwxrwxrwx  1 root root     48 Jan  7 13:47 libpthread_nonshared.a -> /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a
lrwxrwxrwx  1 root root     18 Jan  7 14:52 libstdc++.so.5 -> libstdc++.so.5.0.7
-rw-r--r--  1 root root 829792 Jan  7 14:51 libstdc++.so.5.0.7
lrwxrwxrwx  1 root root     40 Jan  7 13:47 libstdc++.so.6 -> /usr/lib/x86_64-linux-gnu/libstdc++.so.6

Em ~ / .bashrc (para o usuário do oracle) eu tenho isto:

export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=mydb
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib32:/usr/lib64:$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$CLASSPATH
    
por freakvent 07.01.2015 / 07:08

2 respostas

1

Eu tinha a mesma "referência indefinida para o erro 'memcpy@GLIBC_2.14'" com o Oracle 11g R2 no Debian 8 (Jessie). Eu resolvi isso com a solução encontrada aqui :

Defina os diretórios relevantes:

ORACLE_HOME="/u01/app/oracle/product/11.2.0/dbhome_1"
mkfile="$ORACLE_HOME/ctx/lib/ins_ctx.mk"

Crie um wrapper C curto:

cat << __EOF__ > /tmp/memcpy_wrap.c
#include <stddef.h>
#include <string.h>

asm (".symver wrap_memcpy, memcpy@GLIBC_2.14");
void *wrap_memcpy(void *dest, const void *src, size_t n) {
    return memcpy(dest, src, n);
}
__EOF__

Edite o arquivo de criação para usar este wrapper e compilá-lo:

sed -i -e 's/\$(INSO_LINK)/\$(INSO_LINK) -Wl,--wrap=memcpy_wrap \$(ORACLE_HOME)\/ctx\/lib\/memcpy_wrap.o/g' "$mkfile"
gcc -c /tmp/memcpy_wrap.c -o ${ORACLE_HOME}/ctx/lib/memcpy_wrap.o && rm /tmp/memcpy_wrap.c
    
por mivk 14.01.2016 / 01:23
0

Acho que já trabalhei nisso. Sou novo no Ubuntu (acabei de instalar o 14.04 em um servidor antigo) e tenho tentado quebrar o problema memcpy@GLIBC_2.14 também. Eu segui as mesmas notas, etc você se refere acima.

Parece que libstdc++.so.5.0.7 acaba em vários lugares, por exemplo, /usr/lib64 , /usr/lib/x86_64-linux-gnu . Quando eu trabalho através de todos os links, etc, parece que a biblioteca /usr/lib64/libstdc++.so.5 está realmente apontando para a versão que está em /usr/lib/x86_65-linux-gnu . Isso é significativamente mais recente do que o que você (e eu) baixamos.

Eu peguei uma cópia do original libstdc++.so.5.0.7 no /usr/lib/x86-64 e depois copiei o arquivo que baixei para este diretório e reposicionei o link libstdc++.so.5 para a nova versão do arquivo.

Seguiu em frente. Agora, estou recebendo problemas com o Enterprise Manager, voltarei a isso.

    
por Pete 27.03.2015 / 18:56

Tags